批处理文件:删除一堆txt文件中的行
Batch File: delete lines in a bunch of txt files
我在删除 txt 文件的前三行时循环保存 txt 文件时遇到问题。
到目前为止我的代码如下:
@echo off
setlocal enableextensions enabledelayedexpansion
set /a count=1
for %%a in ("C:\Users\%Username%\Desktop\conduct\*.txt") do (
echo %%a
Copy NUL C:\Users\%Username%\Desktop\conducterei\conduct!count!.txt
for /f "skip=3 tokens=*" %%g in (%%a) do (
>>"C:\Users\%Username%\Desktop\conducterei\conduct!count!.txt" echo %%g
)
set /a "count+=1"
)
pause
我读到 For /f 循环不接受通配符,所以我做了一个嵌套循环,但现在我在复制保存在 %%g 变量中的文本时遇到了问题。
DOS提示我的目标文件夹不存在,但我只是在第一个for循环中用COPY NUL创建了它
第二个 for 循环中的命令似乎不正确,不能将 %%g 保存到文本文件中。
原始文本文件如下所示:
blabla
blank
blank
4 5 6 7 8 9 2143
1 2 6 7 1 0 9763
. . . . . . .
我只想要新文本文件中的数字!我已经在这个线程 (Batch File To Copy Every Line In .txt File And Then Create New .txt File For Each Line) 中读到有关该问题的信息,但仅对于一个 txt 文件,我需要做很多工作 ;)
我希望我的问题很清楚:)
格瑞茨巴夫
"DOS prompts that my destination folder does not exist, but i
just created it with COPY NUL in the first for loop."
不,您试图创建一个文件,而不是一个文件夹。根据您报告的错误消息,该尝试失败,因为您提供的路径不存在。我怀疑是输入错误 - 仔细查看您在 COPY 和 ECHO 行中使用的路径,并验证它确实存在。如果没有,则使用 MD
或 MKDIR
来创建它。
注意 - 在追加到文件之前不需要创建空文件。 >>
如果文件不存在,将创建该文件。
有一种更简单、更快的方法来复制文件,跳过 N 行,使用更多。
@echo off
setlocal enableDelayedExpansion
set /a count=1
for %%a in ("C:\Users\%Username%\Desktop\conduct\*.txt") do (
echo %%a
more +3 "%%a" >"someOtherPathThatExists\conduct!count!.txt"
set /a count+=1
)
pause
此技术有以下限制:
<TAB>
个字符转换成一串空格
- 如果文件中的行数超过 64k,MORE 将失败(挂起)
我在删除 txt 文件的前三行时循环保存 txt 文件时遇到问题。 到目前为止我的代码如下:
@echo off
setlocal enableextensions enabledelayedexpansion
set /a count=1
for %%a in ("C:\Users\%Username%\Desktop\conduct\*.txt") do (
echo %%a
Copy NUL C:\Users\%Username%\Desktop\conducterei\conduct!count!.txt
for /f "skip=3 tokens=*" %%g in (%%a) do (
>>"C:\Users\%Username%\Desktop\conducterei\conduct!count!.txt" echo %%g
)
set /a "count+=1"
)
pause
我读到 For /f 循环不接受通配符,所以我做了一个嵌套循环,但现在我在复制保存在 %%g 变量中的文本时遇到了问题。 DOS提示我的目标文件夹不存在,但我只是在第一个for循环中用COPY NUL创建了它
第二个 for 循环中的命令似乎不正确,不能将 %%g 保存到文本文件中。 原始文本文件如下所示:
blabla
blank
blank
4 5 6 7 8 9 2143
1 2 6 7 1 0 9763
. . . . . . .
我只想要新文本文件中的数字!我已经在这个线程 (Batch File To Copy Every Line In .txt File And Then Create New .txt File For Each Line) 中读到有关该问题的信息,但仅对于一个 txt 文件,我需要做很多工作 ;)
我希望我的问题很清楚:)
格瑞茨巴夫
"DOS prompts that my destination folder does not exist, but i just created it with COPY NUL in the first for loop."
不,您试图创建一个文件,而不是一个文件夹。根据您报告的错误消息,该尝试失败,因为您提供的路径不存在。我怀疑是输入错误 - 仔细查看您在 COPY 和 ECHO 行中使用的路径,并验证它确实存在。如果没有,则使用 MD
或 MKDIR
来创建它。
注意 - 在追加到文件之前不需要创建空文件。 >>
如果文件不存在,将创建该文件。
有一种更简单、更快的方法来复制文件,跳过 N 行,使用更多。
@echo off
setlocal enableDelayedExpansion
set /a count=1
for %%a in ("C:\Users\%Username%\Desktop\conduct\*.txt") do (
echo %%a
more +3 "%%a" >"someOtherPathThatExists\conduct!count!.txt"
set /a count+=1
)
pause
此技术有以下限制:
<TAB>
个字符转换成一串空格- 如果文件中的行数超过 64k,MORE 将失败(挂起)