完成新手在这里,让所有的帮助,感谢收到。我希望用批处理文件编辑一个文本文件。
我有一个只有一行的文本文件。我需要删除前240个字符,我需要删除最后82个字符最后,之间的任何东西我需要每个100个字符被一个换行分隔谢谢马克
发布于 2013-08-06 00:07:35
你的问题几乎可以用任何编程语言轻松解决……除Windows批处理外:(
对于Windows批处理,如果文件长度超过8192字节,这几乎是不可能的,因为批处理变量限制为8192个字符。有一个复杂的方法,它使用FC /B一次有效地读取一个字节,表示为十六进制。这将是相对容易的计数。但是,每个十六进制代码都需要转换回字符值。你不想经历所有的痛苦,除了可能的学术兴趣。
您可以使用PowerShell、VBScript或JScript轻松完成您想要的操作。
但是如果你想坚持使用批处理,那么你将需要一个非标准的实用工具来帮助你。
您可以下载一些免费的实用程序,它们会使解决方案变得微不足道。例如,Windows的sed可以很容易地解决这个问题。
该实用程序是纯脚本,可在XP及更高版本的任何Windows计算机上运行-无需下载exe。脚本中嵌入了REPL.BAT is available here.完整文档。
假设REPL.BAT在您的当前目录中,或者更好的是,在您的路径中的某个地方,那么下面的简单批处理脚本应该可以完成此任务。该脚本将要修改的文件的名称作为第一个也是唯一一个参数。文件等级库可以包含路径信息。如果文件包含空格或其他特殊字符,请确保用引号将文件括起来。
@echo off
type %1|repl "^.{240}(.*).{82}$" "$1"|repl ".{100}" "$&\r\n" x >"%~1.mod"
move /y "%~1.mod" %1 >nul发布于 2013-08-06 01:51:43
如果可能的话,我强烈建议改用PowerShell,或者至少使用VBScript。用这些语言做你想做的事情会容易得多。
PowerShell:
$filename = 'C:\path\to\your.txt'
(Get-Content $filename | Out-String) `
-replace '^[\s\S]{240}', '' `
-replace '[\s\S]{82}$','' `
-replace '([\s\S]{100})',"`$1`r`n" `
| Set-Content $filenameVBScript:
filename = "C:\path\to\your.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set re = New RegExp
re.Global = True
txt = fso.OpenTextFile(filename).ReadAll
re.Pattern = "^[\s\S]{240}"
txt = re.Replace(txt, "")
re.Pattern = "[\s\S]{82}$"
txt = re.Replace(txt, "")
re.Pattern = "([\s\S]{100})"
txt = re.Replace(txt, "$1" & vbNewLine)
fso.OpenTextFile(filename, 2).Write txthttps://stackoverflow.com/questions/18061782
复制相似问题