IF EXIST
chỉ kiểm tra xem tệp có tồn tại hay không và không thể kiểm tra thư mục. Thông thường, bạn thử nghiệm như thế này
IF NOT EXIST "myfolder\NUL" mkdir "myfolder"
Thiết bị giả NUL
hoạt động như một tệp và thực tế tồn tại trong mỗi thư mục. Lưu ý chính tả.
Nhưng tôi đã thấy rằng thử nghiệm không thành công trong các lô theo lô, vì các lý do không xác định. Vì vậy, tôi đề nghị này để thay thế:
CD myfolder 2>NUL && CD .. || MD myfolder
CD myfolder
cố gắng một hoạt động pháp lý với các thư mục và các điều kiện thực hiện của MD
/MKDIR
tạo thư mục chỉ khi đó hoạt động thất bại. CD ..
hoàn nguyên hành động nếu thư mục cần tồn tại. 2>NUL
chặn thông báo lỗi nếu thư mục không tồn tại.
chỉnh sửa: ràng có một phương pháp đơn giản để thử nghiệm: thêm một dấu chéo ngược (\) vào tên thư mục để làm cho nó cú pháp một thư mục, như thế này:
if not exist myfolder\ md myfolder || goto :EOF
Điều này sẽ tạo ra các thư mục " myfolder "nếu nó chưa tồn tại. Ngoài ra, trong trường hợp có một tệp có tên "myfolder", MD
sẽ không thành công và tệp lô sẽ bị chấm dứt sau khi thông báo lỗi được hiển thị. Ngoài ra, ERRORLEVEL sẽ được đặt. Tôi thích điều này hơn vì đầu ra lỗi không phải được chuyển hướng.
chỉnh sửa: Nếu bạn muốn thực hiện một số lệnh, chạy chúng trong một subshell, nghĩa là đặt chúng trong parantheses như thế này:
if not exist myfolder\ (
md myfolder
dir myfolder
REM ...or run any other commands
) || goto :EOF
Bạn đang cố gắng in trên bảng điều khiển hoặc trên giấy? Lệnh PRINT có thể không phải là lệnh bạn đang tìm kiếm, hãy thử ECHO. –
Đó chỉ là để gỡ lỗi mã và để chắc chắn rằng hệ thống đang thực hiện điều đó. Tôi là plannig để thay thế nó bằng các lệnh MKDIR, MOVE và RENAME. –