这是我用来复制到输出文件的输入文件内容。
#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|
我不知道为什么字符串!@$%%*&!
也被扯掉了??
答案 0 :(得分:2)
我现在无法调试我的代码,但请尝试:
:: 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
答案 1 :(得分:2)
下一个脚本,调用文件 far.vbs ,然后创建新文件。
代码:
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
答案 2 :(得分:2)
批处理永远不是文件处理和文本操作的强项。如果您有奢侈品,可以从GNU win32下载sed,然后使用这个内容。
C:\test>sed "/#/{s/^#//;s/|$//}" file
sdfs|dfasf|sdfs
sdfs|df!@$%%*&!sdffs|
sasdfasfa|dfsdf|#sdfs