使用批处理

时间:2018-04-13 03:57:23

标签: batch-file

我是批处理编码的新手,请帮助我,我正在尝试编写一个批处理文件,可以删除每行10位后的所有单词,10位后插入.txt或.csv文件中的文件名没有延期。但我无法获得正确的代码。

我的文件就像下面的文件

文件名 - 1234567.txt

数据样本:

1234567890;you are my best friend

我只想删除所有开头的东西;并将其替换为以下样本数据。

想要那样的输出:

1234567890,1234567

输出带有前十个字母的逗号文件名,没有扩展名。

这批编码中最好的人请帮助我。

1 个答案:

答案 0 :(得分:0)

首先,在批处理文件的顶部(在第一行下)使用setlocal

setlocal ENABLEDELAYEDEXPANSION

使用forfiles获取没有扩展名的文件名,然后将所有输出发送到临时文件中:

forfiles /m 1234567.txt /c "cmd.exe /c echo @fname">temp.txt

使用for获取文件名:

for /f "tokens=*" %%a in (temp.txt) do set filename=%%a

确保删除文件名中的"

set filename=%filename:"=%

现在再次使用for循环来循环文件中的每一行,然后在另一个文件中打印一个新行:

for /f "tokens=*" %%a in (1234567.txt) do (
  set line=%%a
  set firsttenchars=!line:~0,10!
  rem The above line is used to get first 10 lines (start from char 0)
  set newline=!firsttenchars!,%filename%
  echo !newline!>>temp1.txt
)

最后一件事是移除旧文件,然后将temp1.txt重命名为1234567.txt

del 1234567.txt>nul
ren temp1.txt 1234567.txt

现在您只需将所有代码放在一起放入1个文件中,您将获得如下结果:

1234567890,1234567