Tôi có tệp lô nằm trong thư mục và phải được chạy từ đó vì nó cập nhật tệp trong thư mục này.
Điều này hoạt động hoàn toàn tốt, ngoại trừ khi người dùng chạy tệp bó với tư cách quản trị viên (bắt buộc trên Vista). Sau đó thư mục khởi động là C: \ Windows \ System32.
Có cách nào để vẫn có thể biết được từ thư mục nào tập tin thực thi được chạy?
Tôi không muốn người dùng nhập thư mục theo cách thủ công.Thư mục bắt đầu của loạt tệp Windows khi 'chạy dưới dạng quản trị viên'
Trả lời
Hãy thử truy cập đường dẫn file thực thi như thế này:
echo %~dp0
Để biết thêm thông tin, xem đoạn trích sau đây từ lệnh for /?
mô tả cách lệnh công trình trên:
You can now use the following optional syntax: %~I - expands %I removing any surrounding quotes (") %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only %~sI - expanded path contains short names only %~aI - expands %I to file attributes of file %~tI - expands %I to date/time of file %~zI - expands %I to size of file %~$PATH:I - searches the directories listed in the PATH environment variable and expands %I to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string The modifiers can be combined to get compound results: %~dpI - expands %I to a drive letter and path only %~nxI - expands %I to a file name and extension only %~fsI - expands %I to a full path name with short names only %~dp$PATH:I - searches the directories listed in the PATH environment variable for %I and expands to the drive letter and path of the first one found. %~ftzaI - expands %I to a DIR like output line
tôi sử dụng:
cd% 0 ..
khi cầu xin hiệp của tập tin batch để thay đổi thư mục vào thư mục chứa tập tin thực thi được bắt đầu vào
-Mathew
Điều đó sẽ không thay đổi ký tự ổ đĩa. –
Một giải pháp làm việc ở đây:.
http://www.vistax64.com/vista-general/79849-run-administrator-changes-default-directory.html
FOR/F %% Tôi TRÊN ("% 0") DO SET BATDIR = %% ~ dpi
eCHO Các tập tin thực thi nằm trong thư mục% BATDIR%
Bạn có thể sử dụng trực tiếp '% ~ dp0'. Không cần phải gọi 'for' ở đây. – Joey
tốt hơn so với cd
là pushd
mà
- thay đổi ký tự ổ đĩa nếu bắt đầu từ
D:\...
- sẽ gán một ký tự ổ đĩa nếu trên một đường dẫn mạng UNC
Vì vậy pushd %~dp0
là tốt.
Thực hành tốt là sau đó gọi popd
khi hoàn tất.
này nên giải quyết vấn đề của bạn bằng cách thiết lập thư mục làm việc cho các tập tin thực thi lại vào thư mục hiện:
Bao gồm hai dòng sau ở phía trên cùng của kịch bản .bat của bạn:
@setlocal enableextensions
@cd /d "%~dp0"
Tìm thấy tại : http://www.codeproject.com/Tips/119828/Running-a-bat-file-as-administrator-Correcting-cur
Điều này là hoàn hảo. Giải quyết vấn đề "không tìm thấy tệp" của tôi khi chạy tệp bat làm quản trị viên. – pandalion98
Bạn có thể CD trực tiếp từ tên tệp bằng cách thêm phụ huynh (không được kiểm tra trong cửa sổ 8.x, nhưng đã làm việc "mãi mãi" theo như tôi có thể nhớ).
CD %FILENAME%\..
và CD sẽ thay đổi ổ đĩa cũng như/D, được hiển thị ở trên nhưng không được đề cập rõ ràng để có thể bỏ qua. CD/D% FILENAME% \ ..
(FOR /? NẾU /? SET /? CALL /? GOTO /? tất cả cung cấp đọc rất hữu ích nếu bạn sử dụng cmd.exe, tôi đọc lại chúng một lần trong một thời gian.)
- 1. Cách kéo tệp vào Visual Studio chạy dưới dạng quản trị viên trên Windows 8
- 2. Psexec "chạy dưới dạng quản trị viên (từ xa)"
- 3. Chạy hàng loạt dưới dạng Quản trị viên (tự động nâng cấp) và sau đó de-elevate
- 4. Cách yêu cầu quyền của quản trị viên khi chương trình bắt đầu?
- 5. Tệp bat Windows 7 không bắt đầu dưới dạng dịch vụ
- 6. lập trình chạy cmd.exe dưới dạng quản trị viên trong vista, C#
- 7. Làm thế nào để bắt đầu một jar java với quyền quản trị trên windows 7
- 8. Java: chạy với tư cách là quản trị viên
- 9. Nhận thư mục gốc của người dùng khi họ chạy tập lệnh dưới dạng gốc
- 10. Nhiều Quản trị viên của tài khoản Windows Azure
- 11. Cách chạy CakePHP trong thư mục con xuất hiện dưới dạng thư mục gốc
- 12. Tệp JAR được xem dưới dạng Thư mục
- 13. Chính xác 'Chạy làm quản trị viên' làm gì?
- 14. Cách giải quyết các thư mục/thư mục tự động bắt đầu bằng "_" (gạch dưới) trong thư mục tài sản
- 15. Làm cách nào để bắt đầu một chương trình có đặc quyền quản trị trong một tệp hàng loạt
- 16. Cách bắt đầu tệp python trong khi Windows khởi động?
- 17. Tệp Hàng loạt Windows để chạy tệp PHP
- 18. Buộc chạy tập lệnh PowerShell làm quản trị viên
- 19. Cách tạo tập tin batch để chạy cmd với tư cách quản trị viên
- 20. Làm cách nào để triển khai các ứng dụng chạy dưới dạng chế độ quản trị viên?
- 21. Ứng dụng .NET chạy dưới dạng Windows Form hoặc dưới dạng Ứng dụng Console
- 22. Bắt đầu Quy trình với quyền quản trị viên trong C#
- 23. sự cho phép của quản trị viên được khuyến khích để chạy studio trực quan sp1 trên windows 7 rc
- 24. iPhone ad hoc phân phối dưới dạng quản trị viên nhóm với chứng chỉ của tác nhân nhóm?
- 25. Dự án thiết lập Dịch vụ Windows - chạy dịch vụ với tư cách quản trị viên
- 26. Chạy tệp Java với tư cách Quản trị viên với đầy đủ các đặc quyền
- 27. Tạo thư mục có thể truy cập chỉ dành cho quản trị viên
- 28. Đặc quyền quản trị dự án Java windows 7
- 29. Đặt thư mục bắt đầu khi gọi Powershell từ .NET?
- 30. Không thể bắt đầu plugin quản lý thỏmq trên Windows
Fantastic , Tôi không biết cái này. Cảm ơn rất nhiều – Marc
Làm mờ đến mức nào! Nhưng chính xác những gì tôi cần. Cảm ơn. – stucampbell
@stucampbell thử lệnh 'for /?' để có được một mô tả chi tiết về cách thức hoạt động (di chuyển xuống trang 4) – Martin