替换批处理文件中的部分字符串

问题描述 投票:0回答:1

第一篇文章!我寻找答案,但无法让它发挥作用。

我创建了一个批处理文件,要求用户提供项目信息,然后根据用户输入创建一组标准文件和文件夹。

这是我需要帮助的代码部分。我正在尝试简化它,或者至少让“&”符号替换也能工作。 “&”似乎破坏了它后面的字符串。

@echo off
    echo Enter a brief Project description:
    set /p projdesc=
    echo.
REM # replace characters in description
        set descname=%projdesc%
        set descname=%descname:the =%
        set descname=%descname:to =_%
        set descname=%descname: over =_%
        set descname=%descname: at =_%
        set descname=%descname: =%
        set descname=%descname:&=-%
        set descname=%descname:.=%
echo %descname%
pause

因此,如果我输入

Rt.71 Bridge over Shark River
,输出就是
Rt71Bridge_SharkRiver
。 但如果我输入
Bridges & Tunnels
,我会收到一条错误消息,并且输出仅为
Bridges

我使用修改后的字符串作为批处理文件其他部分的文件夹名称的一部分。

我使用两个不同的变量 -

projdesc
descname
- 因为我在批处理文件中的其他地方使用原始描述。

batch-file cmd
1个回答
0
投票

我想出了如何修复“&”符号破坏字符串的问题。我只需在处理之前先将原始字符串用引号引起来。然后在处理字符串后删除引号。

这是我更新的代码:

@echo off
    echo Enter a brief Project description:
    set /p projdesc=
    echo.
REM # replace characters in description
        set descname="%projdesc%"
        set descname=%descname:the =%
        set descname=%descname:to =_%
        set descname=%descname: over =_%
        set descname=%descname: at =_%
        set descname=%descname: =%
        set descname=%descname:&=-%
        set descname=%descname:.=%
        set descname=%descname:"=%
echo %descname%
pause

我仍然想简化这个,但希望这可以帮助其他有类似情况的人。

© www.soinside.com 2019 - 2024. All rights reserved.