每两个人 - 替补;对于太空

时间:2017-06-02 08:32:25

标签: batch-file

我已经获得了这个txt文件ej:

  

-state;的;产品 - ; - 201705 - ; - ID1 - ; - 已售 - ; - 4 - ; - PROD 1 - ;;

我需要将其更改为:

  

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

你可以看到每两个 - 我需要改变;有空间。 你能救我吗?

2 个答案:

答案 0 :(得分:0)

@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!
)

将回复-state of product-;-201705-;-ID1-;-SOLD-;-4-;-PROD 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.cmdmybatch.bat将脚本中的MYFILENAME.TXT更改为您的名称行文件-state;of;product-;-201705-;-ID1-;-SOLD-;-4-;-PROD;1-;;mybatch放在与此文件相同的目录中的txt文件。双击mybatch文件。完成后,将会有一个名为NewFile.txt的文件,其中包含已编辑的文本。

好的,暂时忘记上面的内容。在您的PC上打开cmd.exe然后复制下面的所有内容,然后右键单击并粘贴到cmd.exe窗口。它将在economic_changes中为您创建一个名为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

答案 1 :(得分:0)

这个怎么样?

@echo off
setlocal EnableDelayedExpansion

set "STRING=-state;of;product-;-201705-;-ID1-;-SOLD-;-4-;-PROD;1-;;"

echo original: !STRING!

rem // Replace every `-` by `"`, enclose whole string in `""`:
set ^"STRING="!STRING:-="!"" & rem/ odd number of " deranges syntax highlighting!
rem /* Let a `for` loop dismantle the string; since `;` is a token separator
rem    (like ` `, `,`, `=`), the loop divides the string at that characters;
rem    every token separator that appears in a pair of `""` is maintained;
rem    the string portions are reassembled, separated by spaces: */
set "RETURN= "
for %%I in (!STRING!) do set "RETURN=!RETURN!%%I "
rem // Remove surrounding `""` as well as leading and trailing space:
set "RETURN=!RETURN:~2,-2!"
rem // Replace every `"` by `-`:
set ^"RETURN=!RETURN:"=-!" & rem/ odd number of " deranges syntax highlighting!

echo modified: !RETURN!

endlocal
相关问题