Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file .bat文件xcopy文件仅基于具有时间戳的文件名_Batch File - Fatal编程技术网

Batch file .bat文件xcopy文件仅基于具有时间戳的文件名

Batch file .bat文件xcopy文件仅基于具有时间戳的文件名,batch-file,Batch File,我有一个执行以下操作的bat文件 xcopy c:\folder\*.* d:\another_folder\. del *.xml del *.lst 生成的文件名称中有一个时间戳: 我的_文件_11111_08-23-2016_111111.xml 日期时间从格式为MM-DD-YYYY的第三个之后开始 如何编写仅在文件名具有今天日期时才会复制的bat命令?有预定义的环境变量date,它以Windows区域设置定义的格式保存当前本地日期。在命令提示窗口中运行该行 echo %DATE% 如

我有一个执行以下操作的bat文件

xcopy c:\folder\*.* d:\another_folder\.
del *.xml
del *.lst
生成的文件名称中有一个时间戳:

我的_文件_11111_08-23-2016_111111.xml

日期时间从格式为MM-DD-YYYY的第三个
之后开始


如何编写仅在文件名具有今天日期时才会复制的bat命令?

有预定义的环境变量
date
,它以Windows区域设置定义的格式保存当前本地日期。在命令提示窗口中运行该行

echo %DATE%
如果输出为2016年8月23日(MM/DD/YYYY),则字符串中的每个斜杠都必须用连字符替换,如单行命令行所示

set "FileDate=%DATE:/=-%"
%SystemRoot%\System32\xcopy.exe "C:\Folder\*%FileDate%*" "D:\Another_Folder\"
但如果输出为例如2016年8月23日星期二(含工作日)或仅为2016年8月23日(不含工作日),则必须重新格式化当前日期字符串,这两种日期格式示例都是:

set "FileDate=%DATE:~-7,2%-%DATE:~-10,2%-%DATE:~-4%"
%SystemRoot%\System32\xcopy.exe "C:\Folder\*%FileDate%*" "D:\Another_Folder\"
字符替换(第一种方法)分别连接特定子字符串(第二种方法)的工作原理在命令SET的帮助下进行了说明,打开命令提示窗口并运行
SET/?
help SET
可以读取该命令


如果只需复制一个文件,则最有可能使用Windows command processor的内部命令COPY,而不是Windows标准控制台应用程序(外部命令)
xcopy.exe
。在命令提示窗口中运行
copy/?
xcopy/?
以显示这两个复制命令的帮助。

根据您的系统日期格式,它可以简单如下:
xcopy c:\folder\*%date:/=-%*d:\另一个\u文件夹\。
到目前为止您尝试了什么?请分享你的努力!文件名中的日期/时间格式是否符合
date/T
time/T
命令返回的格式?