【发布时间】:2021-03-06 06:48:05
【问题描述】:
好的,所以我非常接近做我需要做的事情了。
我的重命名命令和文件夹末尾的双字母出现问题。出于隐私考虑,代码中的文件夹名称已更改,空间已保留以显示文件夹的命名方式。
双字母是大写的I(眼睛),这个不能改。
是的,此文件存在。
示例:
FolderII - 错误:系统找不到指定的路径。
文件夹 - 作品
FolderI - 作品
for /r "C:\Folder Name" %%a in (*) do if "%%~nxa"=="FileFound" set p=%%~dpnxa
for /f "usebackq tokens=1* delims=." %%A in ("%p%") do set Build=%%B
for /f "tokens=2 delims==" %%G in ('wmic os get localdatetime /value') do set datetime=%%G
for /f "tokens=3 delims=\" %%Z in ("%p%") do set filepath=%%Z
set year=%datetime:~0,4%
set month=%datetime:~4,2%
set day=%datetime:~6,2%
set dbname=Logdb%year%.%Build%
REN "C:\Folder Name\%filepath%\%dbname%" "Logdb%month%-%day%-%year%.%Build%"
输出
已编辑!
CMD>REN "C:\文件夹名称\FolderII\Logdb2020.ext" "Logdb11-23-2020.ext"
系统找不到指定的文件。
已添加
CMD>REN "C:\文件夹名称\文件夹\Logdb2020.ext" "Logdb11-23-2020.ext"
这行得通
编辑澄清* 我将解释我希望它如何工作,只要它被分配到的文件夹中没有 II,它就会这样做。
第一行:在此特定文件夹中搜索名为“SYSCON”的文件,无扩展名,一旦找到,将第二行的文件路径分配给 p
第二行: 打开在第一行找到的文件并获取文件中列出的文件的扩展名并将其分配给 Build
第 3 行:获取当前日期以分配给新文件名在 REN
第 4 行:使用在第 1 行中找到的文件路径获取 REN
5-7 设置日期变量的文件夹名称
第 8 行:将新文件名分配给变量
第 9 行:将找到的位置处的旧文件重命名为生成的新文件名
我不是批处理开发人员,我确实按照它们为我工作的方式编写了这些行,但我总是愿意学习如何做得更好,我是一名 PHP 程序员。这是一个不同的项目。
文件夹结构对于应用程序来说是流动的。搜索初始文件的原因是在 4 个文件夹中的 1 个中找到该文件,然后获取该实际文件夹名称。
我可以回显所有变量并查看正确的文件路径、正确的文件名和正确的新文件名。
当使用 II 重命名文件夹中的文件时,它无法找到要重命名的实际文件,这就是我被卡住的地方。
输出的 IMAGE 在逐行时回显,为了隐私起见,我必须更改文件名。这是 CMD 输出,希望能更好地理解
【问题讨论】:
-
您需要对所涉及的文件/目录的实际名称更加坦诚。遗憾的是,发布的代码只会将
p设置为与“name=FileFound”匹配的最后一个完整文件名,如果您报告的year和build如图所示,dbname将设置为Logdb2020.ext。因此,生成的rename命令将是REN "C:\Folder Name\FolderII\Logdb2020.ext" "Logdb11-23-2020.ext",而不是您报告的那样。 -
@Magoo,你是对的。我已经进行了更新并简要说明了我如何看待脚本的工作方式。我的问题是文件夹名称 FolderII 不工作,但文件夹在 REN 部分工作。
标签: batch-file rename file-rename