CMD变量未在/ r循环中解析

问题描述 投票:0回答:1

我想将日期附加到我们企业每个部门的名为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
windows batch-file cmd file-rename
1个回答
0
投票

它不起作用,因为FOR选项不支持延迟的扩展,也不支持FOR参数的扩展。

© www.soinside.com 2019 - 2024. All rights reserved.