Tôi muốn tạo một vài tệp bó để tự động hóa một chương trình.
Câu hỏi của tôi là khi tôi tạo tập tin bó, thư mục hiện tại là gì? Đây có phải là thư mục chứa tập tin hay nó là cùng thư mục xuất hiện trong dấu nhắc lệnh, hay cái gì khác?
Tôi muốn tạo một vài tệp bó để tự động hóa một chương trình.
Câu hỏi của tôi là khi tôi tạo tập tin bó, thư mục hiện tại là gì? Đây có phải là thư mục chứa tập tin hay nó là cùng thư mục xuất hiện trong dấu nhắc lệnh, hay cái gì khác?
Câu trả lời:
Từ trong tệp bó của bạn:
%cd%
đề cập đến thư mục làm việc hiện tại (biến)%~dp0
đề cập đến đường dẫn đầy đủ đến thư mục của tệp bó (tĩnh)%~dpnx0
và %~f0
cả hai đều đề cập đến đường dẫn đầy đủ đến thư mục bó và tên tệp (tĩnh).Xem thêm: % ~ dp0 có nghĩa là gì và nó hoạt động như thế nào?
.cmd
tệp và chạy với tư cách quản trị viên, %cd%
đưa ra C:\WINDOWS\system32
và %~dp0
đưa ra thư mục tệp bó với dấu gạch chéo.
Nó thường là thư mục mà tệp bó được bắt đầu, nhưng nếu bạn bắt đầu tệp bó từ một phím tắt, một thư mục bắt đầu khác có thể được cung cấp. Ngoài ra, khi bạn ở cmd và thư mục hiện tại của bạn c:\dir3
, bạn vẫn có thể bắt đầu tệp bó bằng cách sử dụng c:\dir1\dir2\batch.bat
trong trường hợp đó, thư mục hiện tại sẽ có c:\dir3
.
Trong một tệp bó,% cd% là lệnh được sử dụng phổ biến nhất cho thư mục hiện tại, mặc dù bạn có thể đặt biến của riêng mình:
set mypath=%cd%
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in)
Vì vậy, nói rằng bạn muốn mở Myprog.exe. Nếu nó nằm trong cùng một thư mục, bạn sẽ sử dụng lệnh:
start %mypath%\Myprog.exe
Điều đó sẽ mở Myprog từ thư mục hiện tại.
Tùy chọn khác là tạo một thư mục trong C: được gọi là AutomatePrograms. Sau đó, bạn chuyển các tệp của mình vào thư mục đó, sau đó bạn có thể mở chúng bằng lệnh sau:
start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"
%cd%
là biến, do đó, việc chạy tệp bó từ Windows Explorer với tư cách quản trị viên sẽ cung cấp C:\WINDOWS\system32
gần như chắc chắn không phải là điều bạn muốn. %~dp0
là phù hợp hơn.
Giả sử bạn đang mở một tệp trong thư mục hiện tại của bạn. Lệnh sẽ là:
start %cd%\filename.filetype
Tôi hy vọng tôi đã trả lời câu hỏi của bạn.
Đây là thư mục từ nơi bạn bắt đầu tập tin bó. Ví dụ, nếu lô của bạn vào c:\dir1\dir2
và bạn làm cd c:\dir3
, sau đó chạy lô, thư mục hiện tại sẽ có c:\dir3
.
Chỉ cần 2 xu của tôi. Lệnh sau không thành công nếu được gọi từ tệp bó (Windows 7) được đặt trên Pendrive:
xcopy /s /e /i %cd%Ala C:\KS\Ala
Nhưng điều này thực hiện công việc:
xcopy /s /e /i %~dp0Ala C:\KS\Ala
%~dp0
%0
có thể đặt tên của chương trình con hiện tại, nhưng%~dp0
sẽ luôn cung cấp đường dẫn đầy đủ đến tệp bó thực thi.