假设您有100个目录,并且对于每个目录,您有一个名为.pdf的文件存储在其他位置。如果要将每个文件移动/复制到具有相同名称的目录中,可以在Windows命令行上完成吗?
答案 0 :(得分:4)
这是一个可能符合您要求的批处理脚本:
setlocal
set target_dir=D:\
set source_dir=C:\WINDOWS
for %%i in (%source_dir%\*.pdf) do move %%i %target_dir%\%%~ni.%%~xi
endlocal
答案 1 :(得分:2)
您可以使用FOR command执行此操作。以下内容:
for /f %%f in ('dir /s /b c:\source\*.pdf') do copy "%%f" c:\target
如果你有一个文件名列表,在文本文件中有完整路径,比如files.txt,你也可以这样做
for /f %%f in (files.txt) do copy "%%f" c:\target
答案 2 :(得分:2)
从命令行:
for /f %f in ('dir /s /b mypath\*.pdf') do @copy %~nxf myotherpath
因为它位于命令行而不是批处理文件中,所以只需要%,而不是%%。
dir / s / b是递归和裸露的。 (见dir /?)
@ before复制将停止每个复制命令的回显。如果你愿意,你可以回复它们,直到你。
%~nxf获取%f的名称和扩展名。 (见电话/?)
答案 3 :(得分:0)
您需要编写一个脚本来遍历每个文件(及其路径),提取文件名 - '。pdf'然后将文件移动到同名目录