windows - 批处理文件从txt文件中删除前10个字符

标签 windows batch-file

我正在尝试使用批处理脚本从文本文件内的多行中删除前 10 个字符,然后将结果输出到新文件。我遇到了this它让我指出了正确的方向,但最终的输出不起作用。

这是我到目前为止所得到的:

setLocal EnableDelayedExpansion
CSCRIPT /nologo %windir%\System32\prnport.vbs -l > c:\IPPorts.txt
type c:\IPPorts.txt | findstr IP_ > c:\IPPorts2.txt
for /f "tokens=*" %%a in (c:\IPPorts2.txt) do (set line=%%a set chars=!line:~10! > c:\IPPorts3.txt)
for /f "delims=" %%x in (c:\IPPorts3.txt) do CSCRIPT /nologo %windir%\System32\prnport.vbs -d -r %%x

第二行将打印机端口列表导出到名为 IPPorts.txt 的文件中。第三个找到其中包含“IP_”的行并导出到 IPPorts2.txt。第四行应该删除不需要的文本(它没有这样做)并导出到 IPPorts3.txt。最后一行将从 IPPorts3.txt 中获取结果,然后删除这些端口。

IPPorts.txt如下:

Server name 
Port name IP_172.20.51.11
Host address 172.20.51.11
Protocol RAW
Port number 9100
SNMP Disabled

每个端口都会重复这些行,其中有多个端口。由于我只需要包含端口名称的行,因此 IPPorts2.txt 如下所示:

Port name IP_172.20.51.11
Port name IP_172.20.52.58
Port name IP_172.20.53.16
Port name IP_172.20.54.19
Port name IP_172.20.55.15-1
Port name IP_172.20.55.15
Port name IP_172.20.55.11

我遇到问题的地方是删除行中的“端口名称”部分(前 10 个字符)。我希望输出在每一行上读取为“IP_X.X.X.X”。问题是第三个文件始终为空。

我哪里出错了?非常感谢任何帮助。

编辑: 这是 Endoro 的答案的更下方,但我认为在这里发布答案可能会很好。这是我将第四行更改为:

for /f "tokens=* delims=" %%c in ('type c:\IPPorts2.txt') do (
 set LINE=%%c
 >> c:\IPPorts3.txt echo !LINE:~10!
 )

这解决了我的问题。谢谢大家!

最佳答案

试试这个:

(for /f "tokens=3" %%i in (IPPorts2.txt) do @echo %%i)>IPPorts3.txt

关于windows - 批处理文件从txt文件中删除前10个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15904253/

相关文章:

windows - 如何以编程方式更改第三台显示器

javascript - 启动桌面应用程序的网页

windows - BATCH文件可通过SSH连接到Linux。如何?

windows - 为什么批处理文件中名称中带有数字的 env 变量的解释不正确?

batch-file - 批处理 - 设置/重置参数调用带有感叹号 (!) 和延迟扩展的子程序?

java - 如何使用批处理文件在cmd提示符中输入文本

windows - 如何在 Windows XP 上的 startup.bat 文件中设置 HeapDumpOnOutOfMemoryError 和 HeapDumpPath

windows - 访问设备配置空间-win内核PCI设备

ftp - 如何在批处理脚本中捕获 ftp 错误代码?

java - 创建批处理文件,用于简单的 javac 和 java 命令执行