批处理不起作用:编译一个.txt文件

时间:2018-04-26 08:18:59

标签: windows batch-file

此批处理命令用于工作,但现在只创建一个空的.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
)
  )
)

3 个答案:

答案 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