bat文件获取日期变量文件名
Bat file get date variable file name
每天在用户本地计算机的目录中生成许多文件,具有以下名称结构:
8-05-21_09-05-2019_wolverine_WCALL1-010
hour_date_username_computername
问题:
我需要一个批处理文件 运行 robocopy 来复制仅在实际生成的文件。像这样:
robocopy 09-05-2019 \server\files-05-21_09-05-2019_wolverine_WCALL1-010
那么,如何获取文件名中间的日期?
如果您只想专门处理名称,这是一种方法。
@echo off
set day=0
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "yyyy=%result:~0,4%"
set "mm=%result:~4,2%"
set "dd=%result:~6,2%"
set "modD=%dd%-%mm%-%yyyy%
for /f %%i in ('dir /b /a-d ^| findstr "_%modD%"') do (
robocopy "source" "destination" %%~i
)
使用 robocopy from your batch-file,您可以 select 仅使用 /MaxAge
选项在过去 24 小时内修改过的文件,值为 1
:
@RoboCopy "SourceDirectory" "DestinationDirectory" /MaxAge:1
如果需要robocopy only files modified today, you may find it simpler to perform the task using powershell from your batch-file:
@PowerShell -NoP "$d=$(Get-Date).ToString('yyyyMMdd');RoboCopy "SourceDirectory" "DestinationDirectory" /MaxAge:$d"
以 locale/user 独立于设置的方式获取日期(此处使用 PowerShell)
在日期前后使用通配符 select 仅包含该日期的文件。
@Echo off
for /f %%A in ('powershell -NoP -c "get-date -f dd-MM-yyyy"') do set "dt=%%A"
RoboCopy "x:\sourcepath" "\server\files" "*_%dt%_*"
每天在用户本地计算机的目录中生成许多文件,具有以下名称结构:
8-05-21_09-05-2019_wolverine_WCALL1-010
hour_date_username_computername
问题: 我需要一个批处理文件 运行 robocopy 来复制仅在实际生成的文件。像这样:
robocopy 09-05-2019 \server\files-05-21_09-05-2019_wolverine_WCALL1-010
那么,如何获取文件名中间的日期?
如果您只想专门处理名称,这是一种方法。
@echo off
set day=0
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "yyyy=%result:~0,4%"
set "mm=%result:~4,2%"
set "dd=%result:~6,2%"
set "modD=%dd%-%mm%-%yyyy%
for /f %%i in ('dir /b /a-d ^| findstr "_%modD%"') do (
robocopy "source" "destination" %%~i
)
使用 robocopy from your batch-file,您可以 select 仅使用 /MaxAge
选项在过去 24 小时内修改过的文件,值为 1
:
@RoboCopy "SourceDirectory" "DestinationDirectory" /MaxAge:1
如果需要robocopy only files modified today, you may find it simpler to perform the task using powershell from your batch-file:
@PowerShell -NoP "$d=$(Get-Date).ToString('yyyyMMdd');RoboCopy "SourceDirectory" "DestinationDirectory" /MaxAge:$d"
以 locale/user 独立于设置的方式获取日期(此处使用 PowerShell)
在日期前后使用通配符 select 仅包含该日期的文件。
@Echo off
for /f %%A in ('powershell -NoP -c "get-date -f dd-MM-yyyy"') do set "dt=%%A"
RoboCopy "x:\sourcepath" "\server\files" "*_%dt%_*"