如何使用批处理脚本从文件中删除第一个和最后一个字符?

这是我用来复制到输出文件的input文件内容。

#sdfs|dfasf|sdfs| sdfs|df!@$%%*&!sdffs| sasdfasfa|dfsdf|#sdfs| 

我需要做的是省略第一个字符“#”和最后一个字符“|” 在输出文件中。 所以输出将是,

 sdfs|dfasf|sdfs| sdfs|df!@$%%*&!sdffs| sasdfasfa|dfsdf|#sdfs 

批处理脚本对我来说是新的,但我尽我所能,尝试了这些代码,

 :: drop first and last char @echo off > xyz.txt & setLocal EnableDelayedExpansion for /f "tokens=* delims=" %%a in (E:\abc1.txt) do ( set str=%%a set str=!str:~1! echo !str!>> xyz.txt ) 

正如你所看到的,它不能产生所需的输出。

现在正在生产的产品就像

 sdfs|dfasf|sdfs| dfs|dfsdffs| asdfasfa|dfsdf|#sdfs| 

我不知道为什么string!@$%%*&! 也是越来越撕裂!

下一个脚本,调用文件far.vbsanf创建你的新文件。

码:

 set OldFile=E:\abc1.txt set NewFile=E:\xyz.txt echo. > "%NewFile%" start far.vbs "%NewFile%" "%OldFile%" 

far.vbs – 从文件中删除第一个和最后一个字符。
创建与第一个脚本相同的文件夹中的新文件far.vbs ,并粘贴以下代码:

 Set OldFile = CreateObject("Scripting.FileSystemObject") Set rdOldFile = OldFile.OpenTextFile(Wscript.Arguments(1), 1) oContent = rdOldFile.ReadAll rdOldFile.Close Set lOldFile = CreateObject("Scripting.FileSystemObject") Set lrdOldFile = OldFile.OpenTextFile(Wscript.Arguments(1), 1) oLen = len(lrdOldFile.ReadAll) lrdOldFile.Close oData = oContent oData = Right(oContent, oLen-1) oData = Left(oData, oLen-2) Set NewFile = CreateObject("Scripting.FileSystemObject") Set fData = NewFile.OpenTextFile(Wscript.Arguments(0), 2) fData.WriteLine (oData) fData.Close 

批处理从来不是文件处理和文本操作的强项。 如果你有奢侈的话,你可以从GNU win32下载sed ,然后使用这个内存。

 C:\test>sed "/#/{s/^#//;s/|$//}" file sdfs|dfasf|sdfs sdfs|df!@$%%*&!sdffs| sasdfasfa|dfsdf|#sdfs 

我现在无法调试我的代码,但请尝试:

 :: drop first and last char @echo off > xyz.txt @echo off > xyz2.txt @echo off > xyz3.txt setLocal EnableDelayedExpansion for /f "tokens=* delims= " %%a in (E:\abc1.txt) do ( set /a N+=1 echo %%a >> xyz.txt echo %%b >> xyz2.txt echo %%%c >> xyz3.txt