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)%~dpnx0và %~f0cả 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?
.cmdtệp và chạy với tư cách quản trị viên, %cd%đưa ra C:\WINDOWS\system32và %~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.battrong 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\system32gần như chắc chắn không phải là điều bạn muốn. %~dp0là 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\dir2và 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
%0có thể đặt tên của chương trình con hiện tại, nhưng%~dp0sẽ luôn cung cấp đường dẫn đầy đủ đến tệp bó thực thi.