Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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
Windows 批处理文件以查找和复制最新文件_Windows_Batch File_Search_Copy - Fatal编程技术网

Windows 批处理文件以查找和复制最新文件

Windows 批处理文件以查找和复制最新文件,windows,batch-file,search,copy,Windows,Batch File,Search,Copy,有一个系统每15分钟生成一个txt文件转储,每次使用不同的文件名。我需要找到包含文本“ASN”的最新文件,并将其复制到一个我可以处理它的文件夹中 到目前为止,我有这个,但我不能让它复制任何文件 SET smart_server='Z:\JUL2017' FOR /F "delims=|" %%I IN ('DIR "%smart_server%" /S /B /O:D ^| find /i "ASN" ') DO SET NewestFile=%%I copy "%smart_server%\

有一个系统每15分钟生成一个txt文件转储,每次使用不同的文件名。我需要找到包含文本“ASN”的最新文件,并将其复制到一个我可以处理它的文件夹中

到目前为止,我有这个,但我不能让它复制任何文件

SET smart_server='Z:\JUL2017'

FOR /F "delims=|" %%I IN ('DIR "%smart_server%" /S /B /O:D ^| find /i "ASN" ') DO SET NewestFile=%%I
copy "%smart_server%\%NewestFile%" "C:\htdocs\smart_asn_downloads\new" 

源目录是一个映射驱动器,我希望将其复制到本地驱动器。

以下内容将复制包含文本
ASN
的文件,忽略文件本身而不是文件名中的大小写:

@echo关闭
设置“智能服务器=Z:\2017年7月”
rem首先列出所有最新文件(递归)
对于('dir”%smart_server%“/S/B/A-D/O:-D')中的/F“delims=|“%%I(
查找/i“ASN”“%%i”>nul
rem成功(errorlevel==0)?
如果不是错误级别1(
设置“NewestFile=%%I”
)
)
如果定义了NewestFile(
rem额外地回显命令due copy不是冗长的
回显副本“%NewestFile%”C:\htdocs\smart\u asn\u downloads\new
复制“%NewestFile%”C:\htdocs\smart\u asn\u downloads\new
)否则(
echo没有找到任何文件!
)
有几件事我已经改变了

1。 设置:
我更改了变量
smart\u server
的设置,因为您的设置包含路径中的

2。 dir命令:
使用
/O:D
进行排序时,将显示最早的第一个要反转列表的位置使用:
/O:-D
。进一步排除要使用dir显示的目录,因为无法使用find在其中搜索,请使用:
/A-D

3。 要查找的管道:
似乎要查找的管道不适用于文件名中的空格,因此我将其从命令中删除,并在for循环中执行。如果
find
成功,我将设置
NewestFile
变量。我将
find
/I
一起使用,因此它忽略了文本的大小写


如果需要脚本来复制文件名中包含
ASN
,并且以
.txt
结尾的文件,则可以使用(这也会忽略此情况):

@echo关闭
设置“智能服务器=Z:\2017年7月”
对于('DIR”%smart\u server%\*ASN*.txt)/S/B/A-D/O:-D')中的/F“delims=|“%%I,请设置新文件=%%I
回显副本“%NewestFile%”C:\htdocs\smart\u asn\u downloads\new
复制“%NewestFile%”C:\htdocs\smart\u asn\u downloads\new

以下内容将复制包含文本的文件
ASN
忽略文件本身而不是文件名中的大小写:

@echo关闭
设置“智能服务器=Z:\2017年7月”
rem首先列出所有最新文件(递归)
对于('dir”%smart_server%“/S/B/A-D/O:-D')中的/F“delims=|“%%I(
查找/i“ASN”“%%i”>nul
rem成功(errorlevel==0)?
如果不是错误级别1(
设置“NewestFile=%%I”
)
)
如果定义了NewestFile(
rem额外地回显命令due copy不是冗长的
回显副本“%NewestFile%”C:\htdocs\smart\u asn\u downloads\new
复制“%NewestFile%”C:\htdocs\smart\u asn\u downloads\new
)否则(
echo没有找到任何文件!
)
有几件事我已经改变了

1。 设置:
我更改了变量
smart\u server
的设置,因为您的设置包含路径中的

2。 dir命令:
使用
/O:D
进行排序时,将显示最早的第一个要反转列表的位置使用:
/O:-D
。进一步排除要使用dir显示的目录,因为无法使用find在其中搜索,请使用:
/A-D

3。 要查找的管道:
似乎要查找的管道不适用于文件名中的空格,因此我将其从命令中删除,并在for循环中执行。如果
find
成功,我将设置
NewestFile
变量。我将
find
/I
一起使用,因此它忽略了文本的大小写


如果需要脚本来复制文件名中包含
ASN
,并且以
.txt
结尾的文件,则可以使用(这也会忽略此情况):

@echo关闭
设置“智能服务器=Z:\2017年7月”
对于('DIR”%smart\u server%\*ASN*.txt)/S/B/A-D/O:-D')中的/F“delims=|“%%I,请设置新文件=%%I
回显副本“%NewestFile%”C:\htdocs\smart\u asn\u downloads\new
复制“%NewestFile%”C:\htdocs\smart\u asn\u downloads\new

SET“smart\u server=Z:\JUL2017”
您的实际变量
smart\u server
包含路径和撇号。另外
设置“NewestFile=%%I”
,因为它可能包含空格。和
复制“%newest文件%”..
因为它在更改
%smart\u server%
变量的内容后是完全合格的,如上所述,您可以进一步改进
DIR
命令,方法是将管道移到
FIND
DIR/B/S/A-D-S-L/OD“%smart\u server%\*ASN*.txt”
。我添加了
.txt
扩展名,因为您说的是文本文件,请在必要时进行调整。@Compo:但他想搜索文件的内容,而不是文件名。虽然我不能不同意您的假设,@Andre,我的根据他们的帖子内容而有所不同。他们似乎正在查找文件名中包含ASN的最新文件。我做出这个假设是因为他们的代码试图做到这一点,而更合理的假设是文件名的随机性是问题所在。@Compo:好的,我从另一个角度理解它,因为这句话:
我需要找到包含文本“ASN”的最新文件。
。但我认为OP会澄清这一点;-)
SET“smart_server=Z:\JUL2017”
您的实际变量
smart_server
包含路径和撇号。另外
设置“NewestFile=%%I”
,因为它可能包含空格。和
复制“%newest文件%”..
由于更改
%smart\u server%
变量的内容后完全合格,如上所述,您可以通过将管道移到
FIND
'DIR/B/S/A-D-S-L/OD“%smart\u server%\*ASN*.tx进一步改进
DIR
命令