此批处理命令用于工作,但现在只创建一个空的.txt文件。 目的是从大量文件的第二行创建一个.txt文件。 谢谢你的帮助。
@echo off & setlocal
set "RootFolder=C:\"
set "FileNamePattern=*.txt"
set "OutFile=C:\VersionA.txt"
>"%FileList%" (
for %%f in ("%RootFolder%\%FileNamePattern%") do (
echo %%f
)
)
>"%OutFile%" (
for /f "usebackq delims=" %%a in ("%FileList%") do (
for /f "skip=1 tokens=1* delims=:" %%b in ('findstr /n "^" "%%a"') do (
echo(%%c
)
)
)
答案 0 :(得分:1)
你真的不需要Set
变量到FileList
,你可以嵌套For
循环而不是写入然后从文本文件中读取。
@Echo Off
Set "RootFolder=C:\"
Set "FileNamePattern=*.txt"
Set "OutFile=C:\VersionA.txt"
If Not Exist "%RootFolder%%FileNamePattern%" GoTo :EOF
( For %%A In ("%RootFolder%%FileNamePattern%") Do (
For /F "Skip=1 Tokens=1* Delims=:" %%B In ('FindStr /N "^" "%%A"'
) Do Echo=%%C))>"%OutFile%"
我已从\
之间移除 %RootFolder%%FileNamePattern%
,因为您已在%RootFolder%
上有一个尾随的 %RootFolder%
。如果以后您修改\
,请确保它还有一个尾随 ssh
。
答案 1 :(得分:0)
'\r'
未定义。
正确设置。
答案 2 :(得分:0)
我不清楚输出是否应包含
文件内容来自第2行或第2行。
如果是后者,让findstr / find完成工作 - 只有一个用于。
:: Q:\Test\2018\04\26\SO50038130.cmd
@echo off & setlocal
set "RootFolder=C:\"
set "FileNamePattern=*.txt"
set "OutFile=C:\VersionA.txt"
Pushd %RootFolder%
( for /f "tokens=2* delims=:" %%A in (
'findstr /n "^" %FileNamePattern% ^|find ":2:"'
) do Echo:%%B
) >"%OutFile%"
PopD