我正在尝试为 Windows 命令行编写一个简单的脚本,该脚本获取目录结构中的所有文件(同一文件夹中的文件以及该目录中的其他文件夹),并将它们连接成一个文件。在这种情况下,我只想抓取 javascript (*.js) 文件。
这是我在这个网站上看到类似问题后目前得到的答案。
@del pheonix.js
@FOR /R %%i in (*) do @type "%%i"\*.js >> pheonix.js
当我运行它时,我收到“目录名称无效”。您知道哪里出了问题吗?
答案1
*.js
只需在循环中使用并从命令中for
删除即可。\*.js
type
另外,我建议您对输出文件使用不同的扩展名(至少是暂时的),以避免for
尝试将文件附加到其自身。
@echo off
del pheonix.js
FOR /R %%i in (*.js) do type "%%i" >> pheonix.tmp
ren pheonix.tmp pheonix.js
如果你@
从批次中删除了 ,你就会很容易地自己看到问题所在:
D:\temp>FOR /R %i in (*) do type "%i"\*.js 1>>pheonix.js
D:\temp>type "D:\temp\aaa.js"\*.js 1>>pheonix.js
The directory name is invalid.
D:\temp>type "D:\temp\bbbb.js"\*.js 1>>pheonix.js
The directory name is invalid.
D:\temp>type "D:\temp\subfolder\cccc.js"\*.js 1>>pheonix.js
The directory name is invalid.