Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用for循环批量重命名文件_Batch File_Cmd - Fatal编程技术网

Batch file 使用for循环批量重命名文件

Batch file 使用for循环批量重命名文件,batch-file,cmd,Batch File,Cmd,我正在尝试使用for循环重命名文件 ::@Echo Off setlocal enableDelayedExpansion ::Set Date set mydate=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2% ::Rename file for %%F in (D:\Data\*.bak) do ( ren %%F D:\Data\prod_live_Full_%mydate%0000.Lts.bak ) 我不断收到无效的命令错误。非常感谢您的帮助。在修改目

我正在尝试使用for循环重命名文件

::@Echo Off
setlocal enableDelayedExpansion
::Set Date
set mydate=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%
::Rename file
for %%F in (D:\Data\*.bak) do (
    ren %%F D:\Data\prod_live_Full_%mydate%0000.Lts.bak
)

我不断收到无效的命令错误。非常感谢您的帮助。

在修改目录中的文件时,请使用dir中的静态文件列表,而不是for中的动态文件列表。否则,您将陷入无限循环

@echo Off
setlocal
set "mydate=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%"
pushd "D:\Data\" && for /f "delims=" %%A in ('dir /a-d /b *.bak') do (
    ren "%%~fA" "prod_live_Full_%mydate%0000.Lts.bak"
)
popd
endlocal
exit /b 0

该错误是由ren命令的第二个参数引起的。它只需要一个新的文件名,而不是完整的路径和文件名。ren命令无法移动文件。

我不知道您的日期格式,但如果我的电脑中的日期剪切逻辑在西班牙语中不正确,则无法工作mydate变量可以包含斜杠,这在文件名中是不允许的


如果有多个文件,ren将失败,因为所有重命名操作都尝试使用相同的文件名。

如果d:\data中有多个.bak文件,这不是要尝试将它们重命名为完全相同的名称吗?工作非常完美!!非常感谢!!