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

Windows 如何使用批处理脚本从文件中删除第一个和最后一个字符?,windows,batch-file,Windows,Batch File,这是我用来复制到输出文件的输入文件内容 #sdfs|dfasf|sdfs| sdfs|df!@$%%*&!sdffs| sasdfasfa|dfsdf|#sdfs| 我需要做的是省略输出文件中的第一个字符“#”和最后一个字符“|”。 所以输出是, sdfs|dfasf|sdfs| sdfs|df!@$%%*&!sdffs| sasdfasfa|dfsdf|#sdfs 批处理脚本对我来说是新的,但我尽了最大努力并尝试了这些代码 :: drop first and last ch

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

#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|

我不知道为什么字符串
!@$%%*&也被撕破了

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

:: 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

下一个脚本,调用filefar.vbs,并创建新文件。

代码:


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

批处理从来都不是文件处理和文本操作的优势。如果你有这种奢侈,你可以从GNUWin32下载,然后使用这个一行程序

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

顺便说一句,这就是我得到的输出::
~1,-1~1,-1~1,-1
请给我一些关于我的代码产生什么样的输出的反馈,然后我会相应地调整代码。这是现在的输出。。“ECHO关闭。#sdfs | dfasf | sdfs | sdfs | DFSDFS |”@lugte098,没问题。。请慢慢来,@lugte098,不,和之前的订单一样。你的意思是。。我应该把它添加到其他代码中吗?我是批处理脚本的新手。。我几乎不了解这件事。请张贴所有工作代码。谢谢。@B7ackAnge7z,我不知道为什么,蝙蝠也会移除!@$%%*&!字符串,这也是我在脚本中遇到的问题,thanx用于响应。脚本将删除之间的文本!一些文字!,因为!由变量使用。现在我更改了代码脚本。试试看。工作正常。@B7ackAnge7z,工作正常。。thanx:-)顺便说一句,我只是想确认一下,如果我没有安装.Net或Visual Studio,这个脚本可以工作吗?+1是一个好的技术,否则,我得出结论,这是不可能的。
C:\test>sed  "/#/{s/^#//;s/|$//}" file
sdfs|dfasf|sdfs
sdfs|df!@$%%*&!sdffs|
sasdfasfa|dfsdf|#sdfs