搜索字符串以查找结尾的引号字符并对其进行修饰?

时间:2018-10-22 19:05:17

标签: windows batch-file cmd double-quotes

我正在尝试在字符串(提示输入路径时由用户输入)中查找尾随引号并将其删除(如果找到)。

问题:我有一个bat文件,提示用户输入文件名和路径(第一个文件通常是通过拖放操作完成的。)如果用户输入的目标路径包含引号,因为它包含空格,则我的结果命令如下所示:compress.exe "c:\source path\"destination.zip"

中间的多余引号需要删除。我找到了很多方法来搜索文件中的字符串,并且我在StackOverflow上找到了this post,这似乎适用,但在我的情况下似乎不起作用。 / p>

我在上面的链接路径上尝试了该命令,告诉它搜索\"而不是bcd,但是代码希望将要搜索的字符串传递给它(作为开关)执行后,当我尝试修改命令以搜索 srcpath 时,蝙蝠失败。我也尝试过:

if "!srcpath:~-1"=="\"" set srcpath=!srcpath:~0,-1!

这将导致:“命令的语法不正确。”

如何在字符串中搜索结尾的引号并将其修整?当要搜索的字符是引号(斜杠引号:\")时,我可以找到的所有方法似乎都不起作用。

2 个答案:

答案 0 :(得分:0)

正是由于这个原因,我在使用路径时使用了SLOPPY批处理技巧。 还有更多优雅的方法,但是它也一样有效,我永远不必记住我是如何实现的。

首先,90%的时间..我们只希望删除所有引号..只是:

set srcpath=%srcpath:"=%

然后在新的串联路径字符串的正面和背面引用大头钉。

但是,如果您真的只想拖尾的话。这是我愚蠢的bash技巧。

1. Add a "? to the end of your string
2. Then delete ""? from that string
3. Then delete "? from that string

威拉!从未失败! 这里的窍门是问号不是有效的路径字符。

:: SAMPLE -- Just a trailing quote removed
set srcpath="c:\source path\"
set srcpath=%srcpath%"?
set srcpath=%srcpath:""?=%
set srcpath=%srcpath:"?=%
echo srcpath=%srcpath%

::You can use the SAME TRICK to remove a trailing backslash

答案 1 :(得分:0)

这对您有用吗?

SET /P "%SRCPATH=Enter the source path "
ECHO %SRCPATH%
ECHO %SRCPATH:"=%