搜索尾随引号字符和 trim 的字符串?
Search string for trailing quote character and trim it?
我正在尝试搜索字符串(在提示输入路径时由用户输入)以查找尾随引号,如果找到则将其删除。
问题:我有一个 bat 文件提示用户输入文件名和路径(第一个通常是通过 drag/drop 完成的)如果用户输入用引号引起来的目标路径,因为它包含空格,我的结果命令将如下所示:compress.exe "c:\source path\"destination.zip"
中间那句多余的话需要去掉。我找到了很多方法来搜索 file 的字符串,我在 Whosebug 上发现 this post 似乎适用,但在我的中似乎不起作用情况。
我在上面的链接路径中尝试了命令,告诉它搜索 \"
而不是 bcd
,但是代码期望它正在搜索的字符串已经传递给它(作为switch) 在执行时,当我尝试修改命令以搜索 srcpath 时,bat 失败了。我也试过这个:
if "!srcpath:~-1"=="\"" set srcpath=!srcpath:~0,-1!
这导致:"The syntax of the command is incorrect."
如何在字符串中搜索结尾引号并 trim 它?当要搜索的字符是引号(斜线引号:\"
)时,我能找到的每种方法似乎都不起作用。
出于这个原因,我在处理路径时使用了一个 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
这对你有用吗?
SET /P "%SRCPATH=Enter the source path "
ECHO %SRCPATH%
ECHO %SRCPATH:"=%
我正在尝试搜索字符串(在提示输入路径时由用户输入)以查找尾随引号,如果找到则将其删除。
问题:我有一个 bat 文件提示用户输入文件名和路径(第一个通常是通过 drag/drop 完成的)如果用户输入用引号引起来的目标路径,因为它包含空格,我的结果命令将如下所示:compress.exe "c:\source path\"destination.zip"
中间那句多余的话需要去掉。我找到了很多方法来搜索 file 的字符串,我在 Whosebug 上发现 this post 似乎适用,但在我的中似乎不起作用情况。
我在上面的链接路径中尝试了命令,告诉它搜索 \"
而不是 bcd
,但是代码期望它正在搜索的字符串已经传递给它(作为switch) 在执行时,当我尝试修改命令以搜索 srcpath 时,bat 失败了。我也试过这个:
if "!srcpath:~-1"=="\"" set srcpath=!srcpath:~0,-1!
这导致:"The syntax of the command is incorrect."
如何在字符串中搜索结尾引号并 trim 它?当要搜索的字符是引号(斜线引号:\"
)时,我能找到的每种方法似乎都不起作用。
出于这个原因,我在处理路径时使用了一个 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
这对你有用吗?
SET /P "%SRCPATH=Enter the source path "
ECHO %SRCPATH%
ECHO %SRCPATH:"=%