我在循环中保存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文件我需要做很多事情;)
我希望我的问题很清楚:)
Greetz Baff
答案 0 :(得分:2)
“DOS提示我的目标文件夹不存在,但是我 刚刚在第一个for循环中使用COPY NUL创建它。“
不,您试图创建文件,而不是文件夹。并根据您报告的错误消息,该尝试失败,因为您提供的路径不存在。我怀疑输入错误 - 仔细查看您在COPY和ECHO行中使用的路径,并验证它确实存在。如果没有,请使用MD
或MKDIR
创建它。
注意 - 在附加到文件之前,不需要创建空文件。如果文件不存在,>>
将创建该文件。
有一种更简单,更快捷的方法来复制文件,跳过N行,使用MORE。
@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>
个字符将转换为空格字符串