【发布时间】:2010-09-16 05:44:03
【问题描述】:
假设您有 100 个目录,并且对于每个目录,您都有一个名为 .pdf 的文件存储在其他地方。如果要将每个文件移动/复制到同名目录中,可以在 Windows 命令行中完成吗?
【问题讨论】:
-
可以选择 powershell 吗?
-
或许是一种选择,但为此,经典的cmd.exe就足够了。
标签: windows command-line
假设您有 100 个目录,并且对于每个目录,您都有一个名为 .pdf 的文件存储在其他地方。如果要将每个文件移动/复制到同名目录中,可以在 Windows 命令行中完成吗?
【问题讨论】:
标签: windows command-line
从命令行:
for /f %f in ('dir /s /b mypath\*.pdf') do @copy %~nxf myotherpath
因为它是在命令行上而不是在批处理文件中,所以你只需要 %,而不是 %%。
dir /s /b 是递归且裸露的。 (见目录/?)
复制前的@ 停止每个复制命令的回显。如果你愿意,你可以回应他们,这取决于你。
%~nxf 获取 %f 的名称和扩展名。 (见调用 /?)
【讨论】:
这是一个批处理脚本,可能会执行您想要的操作:
setlocal
set target_dir=D:\
set source_dir=C:\WINDOWS
for %%i in (%source_dir%\*.pdf) do move %%i %target_dir%\%%~ni.%%~xi
endlocal
【讨论】:
您可以使用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
【讨论】:
您需要编写一个脚本来遍历每个文件(及其路径),提取文件名-'.pdf',然后将文件移动到同名目录
【讨论】: