Windows 如何根据文件名和日期更改多个文件名
我有7个文件。在bat文件中,我想检查文件名,然后用当前日期命名。就像Windows 如何根据文件名和日期更改多个文件名,windows,batch-file,Windows,Batch File,我有7个文件。在bat文件中,我想检查文件名,然后用当前日期命名。就像if/else条件一样 示例 abc.txt重命名为xyz20190715_1.txt(xyzyyymmd_1.txt) pqr.txt重命名为def20190715_1.txt(defyyyymmdd_1.txt) 我是批处理文件的新手,尝试了以下方法: for /f "tokens=1-5 delims=/ " %%d in ("%date%") do rename "abc.txt" %%e-%%f-%%g.dat
if
/else
条件一样
示例
abc.txt
重命名为xyz20190715_1.txt
(xyzyyymmd_1.txt)pqr.txt
重命名为def20190715_1.txt
(defyyyymmdd_1.txt) for /f "tokens=1-5 delims=/ " %%d in ("%date%") do rename
"abc.txt" %%e-%%f-%%g.dat
预期产出
abc.txt
重命名为xyz20190715_1.txt
pqr.txt
重命名为def20190715_1.txt
如果问题是获取实际日期,那么对于今天的日期,最好执行以下操作:
for /f %%a in ('wmic path win32_LocalTime Get Day^,Month^,Year /value') do >nul set "%%a"
set Month=00%Month%
set Month=%Month:~-2%
set Day=00%Day%
set Day=%Day:~-2%
set today=%Year%%Month%%Day%
否则,您需要问一个真正的问题,这个问题以“我如何”开头。“循环浏览文件”类似于
for %%I in (*.txt) do echo %%I
这就是为什么我问如何知道替换
由于似乎没有规则,您必须单独重命名每个文件(只有7个文件没有大的危害,但如果有100多个文件,这会让您发疯)。我还使用了不同的方法来获取日期字符串(与区域设置无关):
所需格式有一个名称。文件名中的日期-时间格式为yyyymmdd,但名称开头有一些硬编码文本,即stackoverflow20190715.TXT
xyz
和def
来自何处?因为我们看不到代码在您的系统上的作用,您需要告诉我们。您还应该通过显示值为%date%
的示例来指定所使用的日期格式。xyz和def是示例名称,应该包含在文件名的开头。我知道,它是什么,但它来自何处?它需要批量进行编码file@PrakashMhasavekar,上面的代码使用\u x.DAT
,就像你的评论一样。如果您想使用问题中的\u 1.txt
,请根据需要调整7行。如何以相同格式获取下一个日期。我正在尝试使用+1进行添加,但它在纯批处理中不可行,但我建议使用其他语言(如Powershell)来保持您的理智完整。问题是我的一个文件带有第二天的日期DPR_ddmmyy格式,第二个文件带有当前的日期脚本_ddmmyy。我设法找到并重命名了脚本_ddmmyy,它随当前日期一起出现。现在还有一个明天的文件…不客气。顺便说一句:不要弄乱系统变量%date%
-选择另一个名称(如%moother%
)
@echo off
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set "datetime=%%I"
set "datetime=%datetime:~0,8%"
ren "contract.txt" "DNSM%datetime%_x.DAT"
ren "security.DAT"" "NSM%datetime%_x.DAT"
ren "Participant.txt" "PM%datetime%_x.DAT"
ren "SCRIP_master.txt" "BSM%datetime%_x.DAT"
ren "DPRxxxx" "BSE_YearlyHL%datetime%_x.DAT"
ren "fo_participant.txt" "DPM%datetime%_x.DAT"
ren "spd_ contract.txt" "SCM%datetime%_x.DAT"
@echo off
for /f "usebackq" %%B in (`"powershell (Get-Date).ToString('yyyyMMdd')"`) do set "datetime=%%B
echo Today's Date %datetime%
ren "contract.txt" "DNSM%datetime%_x.DAT"
ren "security.DAT"" "NSM%datetime%_x.DAT"
ren "Participant.txt" "PM%datetime%_x.DAT"
ren "SCRIP_master.txt" "BSM%datetime%_x.DAT"
ren "DPRxxxx" "BSE_YearlyHL%datetime%_x.DAT"
ren "fo_participant.txt" "DPM%datetime%_x.DAT"
ren "spd_ contract.txt" "SCM%datetime%_x.DAT"
pause
exit