我需要移動然後從磁盤上刪除文件所在的目錄。結構看起來像這樣:在批處理腳本文件中命令rmdir無法正常工作
./Export
/Report_1
/12345
/something.pdf
/Report_2
...
我的代碼如下所示:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
cd Export
for /D %%I in (%~dp0Export\*) do (
set "input=%%~nI"
for /f "tokens=2 delims=_" %%a in ("!input!") do (
md %~dp0new_reports\new_report_%%a
cd Report_%%a
for /R %%f in (*.pdf) do (
for %%S in (%%f) do (
if %%~zS NEQ "0" (
move %%f %~dp0new_reports\new_report_%%a
cd ..
set "id=%%a"
echo !id!
rmdir /S /Q "%~dp0Export\Report_!id!\"
)
)
)
)
)
@echo Finished ....
但命令rmdir僅刪除與ID(/12345)的子文件夾,但REPORT_1文件夾仍然存在,但是空的。我試過echo 「%〜dp0Export \ Report_!id!\」,它看起來沒問題。
所以對劇本結構的結尾是這樣的:
./Export
/Report_1
/Report_2
...
和我需要刪除文件夾REPORT_1等,也是如此。
如果我複製命令到控制檯它可以工作,但在批處理腳本中,它不工作,我需要。
這是Windows下的_batch_編程,而不是* nix系統上的_bash_編程。刪除標籤 – Inian
感謝您的編輯。我的錯。 – Bulva
1.用cd/D「%〜dp0Export」替換'cd Export';用'pushd'替換'cd Report _ %% a' Report _ %%〜a「';在'for/R %% f'循環的關閉')'後面添加'popd';刪除'cd ..'。 2.改變外循環:'for/D %% I in(「%〜dp0Export \ Report_ *」)do('。3.不需要'for %% S'循環,只需訪問'%% 〜zf' 4.將變量'input'設置爲'%%〜fI' 5.不定義變量'id',只需訪問'%%〜a' 6.使用引號:'move「%%〜 f「」%〜dp0new_reports \ new_report _ %%〜a「'。7.更改'rmdir'命令行:'rmdir/S/Q」%〜dp0Export \ %%〜I「' – aschipfl