我在窗口批处理文件(eq.getFiles.bat)中编写了代码,可以获取所选日期范围内的所有文件。 EQ。
xcopy /S /D:01-10-2011 *.* C:\todaysFiles
但我希望在两个日期之间获取所有文件,包括从日期和到目前为止。
文件扩展名为.cmd或.bat
答案 0 :(得分:11)
如果您使用的是Vista / Win7 / WinServer2008,可以使用robocopy
,如下所示:
robocopy c:\source c:\destination *.* /MAXAGE:20101231 /MINAGE:20111001
在XP上,我不确定是否有使用Powershell之类的内置解决方案。
答案 1 :(得分:2)
这个问题的标题有点误导。根据提问者的xcopy
示例,我相信提问者想知道"如何复制所有创建的文件......",而不是如何获取所有文件(我等同于列表)。
提问者还声明"文件扩展名为.cmd或.bat"。这可能意味着提问者只想复制带有这些扩展名的文件,但我认为这意味着提问者想要一个批处理脚本解决方案。
要使用以下解决方案,请打开命令提示符并chdir
到要复制的文件所在的文件夹。然后输入下面列出的命令,根据需要更改SET
值。
SET DESTINATION=C:\destination
SET DATE_FROM=01/01/2005
SET DATE_TO=01/01/2007
> nul forfiles /S /D +%DATE_FROM% /C "cmd /C if @isdir==FALSE 2> nul forfiles /M @file /D -%DATE_TO% && > con ( echo @path && copy /V @path %DESTINATION% )"
注意:这将复制子文件夹中的文件以及顶级文件夹中的文件。
SET
值可以直接硬编码到> nul forfiles...
行,这意味着只需要一行,但为了清楚起见,我使用了变量替换。
需要注意的是,它基于date modified
(问date created
的原始问题)
归功于 aschipfl (https://stackoverflow.com/a/36585535/1754517),为我的回答提供灵感。
答案 2 :(得分:0)
您也可以使用forfiles
命令。它可以在所有子文件夹/s
中递归搜索在所选根文件夹/p <Path>
中创建的文件,对所选文件执行命令/c "<Command>"
,应用掩码搜索/m <SearchMask>
,在日期范围/d [{+|-}][{<Date>|<Days>}]
答案 3 :(得分:0)
这是一个按年份按创建时间查看文件的批次。通过删除额外的百分比符号轻松更改为cmd提示。
for %%a in (2011 2012 2013 2014 2015 2016 2017) do (
for /f %%i in ('xxcopy i:\podcasts\*.* /LL /ZS /Q /FC /DA:%%a-01-01 /DB:%%a-12-31 ^| find /c /v ""') do echo %%a: %%i
)