![Windows 批处理程序](https://linux22.com/image/1507796/Windows%20%E6%89%B9%E5%A4%84%E7%90%86%E7%A8%8B%E5%BA%8F.png)
我必须合并一组 ASCII 文件,并且我尝试使用这个批处理文件,这个文件会创建一个新文件,该文件组合所有文件并从每个文件中删除标题。
@echo off
FOR /F "delims=*" %%i in (header.txt) do @echo %%i
FOR /F "skip=1 delims=*" %%i in (A1.DAT A2.DAT A3.DAT A4.DAT A5.DAT) do @echo %%i
这个批处理文件可以工作,但我想使用通配符(如 *.dat),而不是在批处理文件中提供每个文件名。有人能帮我一下吗,如何使用通配符而不是输入单个文件名?
答案1
尝试下一个代码片段:
@echo off
SETLOCAL EnableExtensions
FOR /F "delims=" %%i in (header.txt) do @echo %%i
FOR %%I in (*.dat) do @FOR /F "usebackq skip=1 delims=" %%i in ("%%~I") do @echo %%i
使用方法如下:>"1127756merged.txt" 1127756.bat
这里
FOR %%I in (*.dat)
循环返回.dat
当前目录文件夹中所有文件的列表;- 该列表动态的即加载您在处理过程中添加到文件夹中的文件;
- 得到一个静止的列出,改用
FOR /F "delims=" %%I in ('dir /B *.dat')
;
- 嵌套
%%i
循环按顺序处理所有文件; - 注意
delims=
而不是你的delims=*
;(并思考:也许我的这个建议是错误的)。
资源(必读):
- (命令参考)Windows CMD 命令行的 AZ 索引
- (有用的细节)Windows CMD Shell 命令行语法
- (
%~I
等专题页面)命令行参数(参数) - (特殊页面)启用延迟扩展
- (
>>
等>
专题页面)重定向