我已经获得了这个txt文件ej:
-state;的;产品 - ; - 201705 - ; - ID1 - ; - 已售 - ; - 4 - ; - PROD 1 - ;;
我需要将其更改为:
- 产品状态 - ; - 201705 - ; - ID1 - ; - 已售出 - ; - 4 - ; - PROD 1 - ;;
你可以看到每两个 - 我需要改变;有空间。 你能救我吗?
答案 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.cmd
或mybatch.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