CMD 变量未在 for /r 循环中解析
CMD variable isn't resolved in for /r loop
我想把日期附加到我们企业每个部门名为 archive
的所有文件夹和子文件夹中的所有文件中。
所以我的代码是这样的:
for /d %i in ("V:\*.*") do (if exist "%i\archive" (for /r "%i\archive\" %a in ("*.*") do echo ren "%~a" "%~na_%date:~-4,4%%date:~-7,2%%date:~-10,2%%~xa"))
问题是,变量 %i
只适用于 if
语句,不适用于 for /r
循环。
它回显:
if exist "V:\department1\archive" (for /r "%i\archive\" %a in ("*.*") do echo ren "%~a" "%~na_20191210%~xa")
if exist "V:\department2\archive" (for /r "%i\archive\" %a in ("*.*") do echo ren "%~a" "%~na_20191210%~xa")
如您所见,它没有解析第二个循环中的 %i
。
有人可以解释为什么这不起作用吗?
文件夹树如下:
V:\department1\archive\file1.docx
V:\department1\archive\subfolder1\file1.docx
V:\department1\archive\subfolder2\file1.docx
V:\department1\stillneedthis\file1.docx
V:\department2\archive\file1.docx
V:\department2\archive\subfolder1\file1.docx
V:\department2\archive\subfolder2\file1.docx
V:\department2\stillneedthis\file1.docx
它不起作用,因为 FOR 选项既不支持延迟也不支持 FOR 参数扩展。
借助辅助函数,您可以使用百分比扩展。
for /d %%i in ("V:\*.*") do (
if exist "%%i\archive" call :helper "%%~i"
)
exit /b
:helper
for /r "%~1\archive\" %a in ("*.*") do (
echo ren "%~a" "%~na_%date:~-4,4%%date:~-7,2%%date:~-10,2%%~xa"
)
我想把日期附加到我们企业每个部门名为 archive
的所有文件夹和子文件夹中的所有文件中。
所以我的代码是这样的:
for /d %i in ("V:\*.*") do (if exist "%i\archive" (for /r "%i\archive\" %a in ("*.*") do echo ren "%~a" "%~na_%date:~-4,4%%date:~-7,2%%date:~-10,2%%~xa"))
问题是,变量 %i
只适用于 if
语句,不适用于 for /r
循环。
它回显:
if exist "V:\department1\archive" (for /r "%i\archive\" %a in ("*.*") do echo ren "%~a" "%~na_20191210%~xa")
if exist "V:\department2\archive" (for /r "%i\archive\" %a in ("*.*") do echo ren "%~a" "%~na_20191210%~xa")
如您所见,它没有解析第二个循环中的 %i
。
有人可以解释为什么这不起作用吗?
文件夹树如下:
V:\department1\archive\file1.docx
V:\department1\archive\subfolder1\file1.docx
V:\department1\archive\subfolder2\file1.docx
V:\department1\stillneedthis\file1.docx
V:\department2\archive\file1.docx
V:\department2\archive\subfolder1\file1.docx
V:\department2\archive\subfolder2\file1.docx
V:\department2\stillneedthis\file1.docx
它不起作用,因为 FOR 选项既不支持延迟也不支持 FOR 参数扩展。
借助辅助函数,您可以使用百分比扩展。
for /d %%i in ("V:\*.*") do (
if exist "%%i\archive" call :helper "%%~i"
)
exit /b
:helper
for /r "%~1\archive\" %a in ("*.*") do (
echo ren "%~a" "%~na_%date:~-4,4%%date:~-7,2%%date:~-10,2%%~xa"
)