Batch file 每两个替代品;空间

Batch file 每两个替代品;空间,batch-file,Batch File,我收到了这个txt文件ej: -国家;属于产品--201705-;-ID1--售出--4-;-戳1-;; 我需要把它改成: -产品状态--201705-;-ID1--售出--4-;-产品1- 正如你所看到的每两个-我需要改变;有一个空格。 你能帮我吗 @echo off setlocal enabledelayedexpansion for /f "delims=" %%a in (YOURFILENAME.TXT) do ( SET s=%%a SET s=!s:;= !

我收到了这个txt文件ej:

-国家;属于产品--201705-;-ID1--售出--4-;-戳1-;;

我需要把它改成:

-产品状态--201705-;-ID1--售出--4-;-产品1-

正如你所看到的每两个-我需要改变;有一个空格。 你能帮我吗

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (YOURFILENAME.TXT) do (
    SET s=%%a
    SET s=!s:;= !
    SET s=!s:- =-;;!
    SET s=!s: -=-!
    SET s=!s:-;;-=-;-!
    echo !s!
)
将回显<代码>-产品状态--201705-;-ID1--售出--4-;-产品1-

若你们想把修改过的每一行写回一个文件,那个么只需将它回显到文件中即可

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (YOURFILENAME.TXT) do (
    SET s=%%a
    SET s=!s:;= !
    SET s=!s:- =-;;!
    SET s=!s: -=-!
    SET s=!s:-;;-=-;-!
    echo !s!
) >> NewFile.txt
您需要复制上述脚本,粘贴到
txt
文件中,然后将文件重命名为
mybatch.cmd
mybatch.bat
将脚本中的
MYFILENAME.txt
更改为txt文件的名称,其中的行
-状态;属于产品--201705-;-ID1--售出--4-;-戳1-;;
mybatch
放在与此文件相同的目录中。双击
mybatch
文件。完成后,将有一个名为
NewFile.txt
的文件,其中包含已编辑的文本

好吧,暂时忘掉上面的内容。在电脑上打开
cmd.exe
,然后复制下面的所有内容,然后右键单击并粘贴到
cmd.exe
窗口中。它将为您创建一个名为MyBatch.cmd的文件,并等待它完成。现在查看目录中的文件New_economic_changes.txt

echo @echo off > "%userprofile%\desktop\Economic_Folder\MyBatch.cmd"
echo setlocal enabledelayedexpansion >> "%userprofile%\desktop\Economic_Folder\MyBatch.cmd"
echo for /f "delims=" %%a in (economic_changes.txt) do ( >> "%userprofile%\desktop\Economic_Folder\MyBatch.cmd"
echo    SET s=%%a >> "%userprofile%\desktop\Economic_Folder\MyBatch.cmd"
echo    SET s=!s:;= ! >> "%userprofile%\desktop\Economic_Folder\MyBatch.cmd"
echo    SET s=!s:- =-;;! >> "%userprofile%\desktop\Economic_Folder\MyBatch.cmd"
echo    SET s=!s: -=-! >> "%userprofile%\desktop\Economic_Folder\MyBatch.cmd"
echo    SET s=!s:-;;-=-;-! >> "%userprofile%\desktop\Economic_Folder\MyBatch.cmd"
echo    echo !s! >> "%userprofile%\desktop\Economic_Folder\MyBatch.cmd"
echo ) >> "%userprofile%\desktop\Economic_Folder\New_economic_changes.txt" >> "%userprofile%\desktop\Economic_Folder\MyBatch.cmd"

pause
这个怎么样

@echo关闭
setlocal EnableDelayedExpansion
设置“字符串=-state;of;product-;-201705-;-ID1-;-sall-;-4-;-PROD;1-;”
回音原文:!一串
rem//用``替换每个`-`,将整个字符串括在```中:
设置^“STRING=”!STRING:-=“!“&rem/奇数”使语法突出显示混乱!
rem/*让`for`循环拆下字符串;因为`;`是标记分隔符
rem(如“`,`,`=`),循环在该字符处分割字符串;
rem保留出现在一对```中的每个标记分隔符;
rem重新组装字符串部分,用空格分隔:*/
设置“RETURN=”
对于(!STRING!)中的%%I,请设置“RETURN=!返回!%%我“
rem//删除周围的“”“”以及前导和尾随空格:
设置“RETURN=!返回:~2,-2!"
rem//将每个``替换为`-`:
设置^“RETURN=!RETURN:=-!“&rem/奇数”使语法突出显示混乱!
修改回声:!回来!
端部

如果我在cmd:for/f“delims=“%%a in(file.txt)do(SET s=%%a SET s=!s:;=!SET s=!s:-=-;!SET s=!s:-=!SET s=!s:-;;-=-;-;-;-;-;-;-!echo!s!)上写东西,它没有做任何事情你把文件名放在
file.txt
的位置了吗?批处理文件是否与txt文件位于同一目录中?此外,这是一个批处理文件。因此,您需要将所有内容复制到一个文本文件中,使用扩展名
.cmd
.bat
保存它,并将其放在与txt文件相同的目录中。然后将文件名放在我放置的位置
file.txt
在批处理中创建txt。可以在(file.txt)中写入或/f“delims=“%%a”(SET s=%%a SET s=!s:;=!SET s=!s:-=;;!SET s=!s:-=-!SET s=!s:-;;;;-=-;-;-;;-;;-;;;;-!echo!s!)>>我的路线并进行更改?或者我遗漏了什么?您的txt文件的确切路径和文件名是什么?如果你给它,我会给你写代码为你创建批处理文件。路径是在我的桌面名为Economic_folder的文件夹中。txt文件是economic_changes.txt