Windows 批处理命令中目录的通配符
Wildcards for directory in Windows batch command
我需要使用批处理文件将一个文件夹的内容复制到另一个文件夹 - 我面临的问题是其中一个父文件夹每天都会更改,并以今天的日期命名。因此,例如,我有以下命令:
xcopy /Y /S "\auto-jenkins\Builds17\R1\[0822]\EN\*.*" "C:\Users\Administrator\Desktop\EN"
今天工作正常,不幸的是明天 [0822]
将不存在,我需要的文件将在 [0823]
下。有谁知道我可以使用通配符代替 [0822]
的方法吗?
[08**]
文件夹将是 \R1
下面的唯一文件夹,如果有帮助...
您可以使用特定于国家/地区的自动日期变量 %date
:
xcopy /Y /S "\auto-jenkins\Builds17\R1\[%date:~3,2%%date:~0,2%]\EN\*.*" "C:\Users\Administrator\Desktop\EN"
在这里,月份和日期是从日期字符串中提取的。第一个数字是起始位置(从0开始),下一个数字是长度。
有谁知道我可以使用通配符代替 [0822] 的方法吗?
您不需要通配符。请改用当前日期(格式正确)。使用以下批处理文件。
CopyFiles.cmd:
@echo off
setlocal
rem get the date
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1,2" %%g in (`wmic Path Win32_LocalTime Get Day^,Month ^| findstr /r /v "^$"`) do (
set _day=00%%g
set _month=00%%h
)
rem pad day and month with leading zeros
set _month=%_month:~-2%
set _day=%_day:~-2%
xcopy /Y /S "\auto-jenkins\Builds17\R1[%_month%%_day%]\EN*.*" "C:\Users\Administrator\Desktop\EN"
endlocal
进一步阅读
- An A-Z Index of the Windows CMD command line - 所有与 Windows cmd 行相关的内容的绝佳参考。
- for /f - 根据另一个命令的结果循环命令。
- wmic - Windows 管理规范命令。
反正R1
目录下只有一个文件夹,可以用for /D
取名:
for /D %%D in ("\auto-jenkins\Builds17\R1\*") do (
xcopy /Y /S "%%~D\EN\*.*" "C:\Users\Administrator\Desktop\EN"
)
*
是一个全局通配符,代表任意数量的任意字符。您也可以使用 [????]
代替它,因此您的文件夹名称必须由 []
.
之间的四个字符组成
我需要使用批处理文件将一个文件夹的内容复制到另一个文件夹 - 我面临的问题是其中一个父文件夹每天都会更改,并以今天的日期命名。因此,例如,我有以下命令:
xcopy /Y /S "\auto-jenkins\Builds17\R1\[0822]\EN\*.*" "C:\Users\Administrator\Desktop\EN"
今天工作正常,不幸的是明天 [0822]
将不存在,我需要的文件将在 [0823]
下。有谁知道我可以使用通配符代替 [0822]
的方法吗?
[08**]
文件夹将是 \R1
下面的唯一文件夹,如果有帮助...
您可以使用特定于国家/地区的自动日期变量 %date
:
xcopy /Y /S "\auto-jenkins\Builds17\R1\[%date:~3,2%%date:~0,2%]\EN\*.*" "C:\Users\Administrator\Desktop\EN"
在这里,月份和日期是从日期字符串中提取的。第一个数字是起始位置(从0开始),下一个数字是长度。
有谁知道我可以使用通配符代替 [0822] 的方法吗?
您不需要通配符。请改用当前日期(格式正确)。使用以下批处理文件。
CopyFiles.cmd:
@echo off
setlocal
rem get the date
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1,2" %%g in (`wmic Path Win32_LocalTime Get Day^,Month ^| findstr /r /v "^$"`) do (
set _day=00%%g
set _month=00%%h
)
rem pad day and month with leading zeros
set _month=%_month:~-2%
set _day=%_day:~-2%
xcopy /Y /S "\auto-jenkins\Builds17\R1[%_month%%_day%]\EN*.*" "C:\Users\Administrator\Desktop\EN"
endlocal
进一步阅读
- An A-Z Index of the Windows CMD command line - 所有与 Windows cmd 行相关的内容的绝佳参考。
- for /f - 根据另一个命令的结果循环命令。
- wmic - Windows 管理规范命令。
反正R1
目录下只有一个文件夹,可以用for /D
取名:
for /D %%D in ("\auto-jenkins\Builds17\R1\*") do (
xcopy /Y /S "%%~D\EN\*.*" "C:\Users\Administrator\Desktop\EN"
)
*
是一个全局通配符,代表任意数量的任意字符。您也可以使用 [????]
代替它,因此您的文件夹名称必须由 []
.