首先,我是新手,对不起,如果这是一项简单的任务。 我有一个只包含PDF文件的文件夹,我只需要复制包含某些文本的文件[此文本各不相同,但开头始终相同] 例如
我想将以test开头的任何文件复制到测试文件夹,然后测试测试文件夹和样本到示例文件夹。 我计划将此作为每30分钟运行一次的脚本,因此只需要复制文件已经更改[这应该减少它必须复制的数量]
我是批量写作的新手,但我今天正在尝试。
提前致谢 J
答案 0 :(得分:1)
您可以使用*
作为外卡来移动所需的文件。
@echo off
pushd "C:\pdf_files"
copy test_*.pdf "C:\test_files"
copy testing_*.pdf "C:\testing_files"
copy sample_*.pdf "C:\sample_files"
popd
显然,用您正在使用的路径替换路径。
答案 1 :(得分:1)
这可以减少不必要的副本:
@echo off
rem -- set folder paths WITHOUT ending slash
set pdf_folder=c:\pdfs
set test_folder=c:\tests
set testing_folder=c:\tests
set sample_folder=c:\sample
pushd %pdf_folder%
rem -- COPY the non-existing in target folder files
echo n|copy /-y test_*.pdf %test_folder%\
echo n|copy /-y test_*.pdf %testing_folder%\<n
echo n|copy /-y sample_*.pdf %sample_folder%\<n
rem -- UPDATE only modified files
replace test_*.pdf %test_folder% /u
replace testing_*.pdf %testing_folder% /u
replace sample_*.pdf %sample_folder% /u
popd
答案 2 :(得分:1)
@ECHO OFF
SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
SET "destdir=U:\destdir"
FOR /f "tokens=1*delims=_" %%a IN (
'dir /b /a-d "%sourcedir%\*_*.pdf" '
) DO IF NOT EXIST "%destdir%\%%a\%%a_%%b" (
ECHO(MD "%destdir%\%%a"
ECHO(COPY "%sourcedir%\%%a_%%b" "%destdir%\%%a\%%a_%%b"
)
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
所需的MD命令仅用于ECHO
用于测试目的。 在您确认命令正确之后,将ECHO(MD
更改为MD
以实际创建目录。附加2>nul
以禁止错误消息(例如,当目录已存在时)
为了测试目的,所需的COPY命令仅为ECHO
。 在您确认命令正确后,将ECHO(COPY
更改为COPY
以实际复制文件。附加>nul
以取消报告消息(例如1 file copied
)
该进程从基本格式的目录列表中读取每个文件名(/ b),禁止匹配*_*.pdf
的所有文件的目录条目(/ ad),并在第一个_
之前将令牌分配给{{ 1}}和余下的%%a
。
如果目标文件名不存在,则在目标目录下创建子目录%%b
,然后复制该文件。
如果要复制,请删除%%a
子句,但保留该物理行上的右括号。