我正在尝试编写一个批处理文件,该文件将重命名其所在文件夹中的每个.txt文件,以在名称中包含日期戳。我得到了它应有的回声,但是当我尝试使用rename或xcopy进行相同操作时,我得到“存在重复的文件名,或者文件 找不到。”
我是刚开始批量生产的人,我不太清楚这是怎么回事。也许是一个小的语法问题?
@echo off
setlocal enabledelayedexpansion
goto :main
:main
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%
set stamp=!YYYY!-!MM!-!DD!___!HH!:!Min!:!Sec!
echo !stamp!
echo.
FOR %%G IN (*.txt) DO (
echo going to rename %%~nxG
echo it will become !stamp!___%%~nxG
ren %%~nxG !stamp!___%%~nxG
echo.
)
pause
goto :eof
答案 0 :(得分:0)
由于无效的文件名字符 : ,(如注释中所述,这是产生错误消息的原因),这是一个示例,将它们替换为 。 :
100: CLOCK_REALTIME_COARSE and CLOCK_MONOTONIC_COARSE
410: CLOCK_REALTIME and CLOCK_MONOTONIC
5530: CLOCK_BOOTTIME
6630: CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID
请注意,您可能需要考虑使用某种过滤系统,以防止脚本的任何后续运行都处理相同的文件,从而将其名称再增加@Echo Off
SetLocal DisableDelayedExpansion
Set "stamp="
For /F "Tokens=1-6Delims=/: " %%A In ('""%__AppDir__%Robocopy.exe" : : /NJH /L"'
)Do If Not Defined stamp Set "stamp=%%A-%%B-%%C___%%D.%%E.%%F"
If Not Defined stamp GoTo :EOF
For %%A In ("*.txt")Do If "%%~xA"==".txt" (Echo(&Echo going to rename %%~nxA
Echo it will become %stamp%___%%~nxA&Ren "%%~nxA" "%stamp%___%%~nxA")
Pause
GoTo :EOF
个字符。