![如何使用 Windows 命令提示符连接每个子目录中的文件](https://linux22.com/image/1455715/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Windows%20%E5%91%BD%E4%BB%A4%E6%8F%90%E7%A4%BA%E7%AC%A6%E8%BF%9E%E6%8E%A5%E6%AF%8F%E4%B8%AA%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6.png)
我是个新手,一个研究生,而且很沮丧!!我有大量包含子目录的目录,每个子目录都包含一堆 .irf 文件(这些是 DVR 类型的文件)。
我正在尝试使用命令提示符让每个子目录包含一个与该子目录中的 .irf 关联的 .irf 文件。理想情况下,新文件将具有子目录的名称。
我可以毫无问题地将它们连接起来,逐个进入每个子文件夹:
copy /b *.irf concat.irf
为了使其对每个子目录起作用,我一直尝试使用 for 命令,并将复制命令放入批处理文件(copyIRF.bat)
for /d /r %i in (*.*) do call copyIRF.bat %i )
这会将名为 concat.irf 的连接文件放入父目录中,该目录是子目录 #1 中的文件的组合。
但是,当它连接第二个目录中的文件时,它会将这些文件附加到父文件夹中的同一个文件 concat.irf,而不是将生成的文件放入各自的子目录中。
我想要的是:
Directory
Subdir1
*.irf
*.irf
*.irf...etc.
Subdir1concat.irf
Subdir2
*.irf
*.irf
*.irf ...etc..
Subdir2concat.irf
我真的非常感谢任何帮助!!
(我使用 Win7 64 位专业版)
答案1
下一个循环命令可以帮助:
for /F "delims=" %i in ('dir /B /S /AD') do @call copyIRF.bat "%i"
如果你的copyIRF.bat
定义如下:
==>type copyIRF.bat
@echo OFF
pushd "%~1"
if exist *.irf (
del "%~nx1concat.irf"
copy *.irf "%~nx1concat.irf"
echo debug copy *.irf "%~nx1concat.irf"
)
popd
exit /B
资源(必读):
- (命令参考)Windows CMD 命令行的 AZ 索引
- (其他细节)Windows CMD Shell 命令行语法
- (
%~1
等%~nx1
专题页面)命令行参数(参数)