如何在批处理脚本中区分文件夹和文件?(或者如何不加区别地复制和重命名时间戳?)

如何在批处理脚本中区分文件夹和文件?(或者如何不加区别地复制和重命名时间戳?)

我想创建一个批处理文件来复制指定目录中的文件或文件夹,并将日期和时间附加到其名称中。
这是我的实际代码:

@echo off
Set _bpath=T:\Backup\
if [%1]==[] goto :eof
:loop
Set _file=%~n1%
Set _ext=%~x1%
For /f "tokens=1-3 delims=1234567890 " %%a in ("%time%") Do Set "delims=%%a%%b%%c"
For /f "tokens=1-4 delims=%delims%" %%G in ("%time%") Do (
   Set _hh=%%G
   Set _min=%%H
   Set _ss=%%I
   Set _ms=%%J
)
copy %1 "%_bpath%%_file%(%date:/=-% %_hh%h%_min%m%_ss%s)%_ext%"
shift
if not [%1]==[] goto loop

这个只适用于文件,我可以轻松地将其适用于文件夹,xcopy /E %1 "%_bpath%%_file%(%date:/=-% %_hh%h%_min%m%_ss%s)但我想避免处理两个批处理文件。

那么如何不加区分地复制/重命名它们(我尝试过 copy、xcopy 和 robocopy 但是都没有成功)或者如何区分它们以创建两个 IF 分支?(使用 %~x1% 太不可靠了...)

答案1

这可能对你有用,看看 问题

相关内容