我正在尝试在字符串(提示输入路径时由用户输入)中查找尾随引号并将其删除(如果找到)。
问题:我有一个bat文件,提示用户输入文件名和路径(第一个文件通常是通过拖放操作完成的。)如果用户输入的目标路径包含引号,因为它包含空格,则我的结果命令如下所示:compress.exe "c:\source path\"destination.zip"
中间的多余引号需要删除。我找到了很多方法来搜索文件中的字符串,并且我在StackOverflow上找到了this post,这似乎适用,但在我的情况下似乎不起作用。 / p>
我在上面的链接路径上尝试了该命令,告诉它搜索\"
而不是bcd
,但是代码希望将要搜索的字符串传递给它(作为开关)执行后,当我尝试修改命令以搜索 srcpath 时,蝙蝠失败。我也尝试过:
if "!srcpath:~-1"=="\"" set srcpath=!srcpath:~0,-1!
这将导致:“命令的语法不正确。”
如何在字符串中搜索结尾的引号并将其修整?当要搜索的字符是引号(斜杠引号:\"
)时,我可以找到的所有方法似乎都不起作用。
答案 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:"=%