String 如何通过单个命令修剪前导空格和尾随空格?

String 如何通过单个命令修剪前导空格和尾随空格?,string,batch-file,cmd,String,Batch File,Cmd,假设变量string中有一个字符串值,如何使用单个命令(行)删除前导空格和尾随空格 例如,字符串是(此处的\uu代表制表符;双引号仅用于说明,而不是字符串值的一部分): 预期输出为(双引号不是字符串的一部分): 如何做到这一点 在这种情况下,当我说“空白”时,我指的是空格和(水平)制表符。不可能在一行中同时修剪空格和制表符,但仅限于您可以使用的空格: 以下代码仅适用于前导空格(uMeans选项卡): 但是,尾随空格仍然存在;但是它们可以通过中所示的方法删除。使用单个批处理命令是不可能的,但请参见

假设变量
string
中有一个字符串值,如何使用单个命令(行)删除前导空格和尾随空格

例如,字符串是(此处的
\uu
代表制表符;双引号仅用于说明,而不是字符串值的一部分):

预期输出为(双引号不是字符串的一部分):

如何做到这一点


在这种情况下,当我说“空白”时,我指的是空格和(水平)制表符。

不可能在一行中同时修剪空格和制表符,但仅限于您可以使用的空格:

以下代码仅适用于前导空格(uMeans选项卡):


但是,尾随空格仍然存在;但是它们可以通过中所示的方法删除。

使用单个批处理命令是不可能的,但请参见有趣的内容。与
set“x=spaces,…,space(s)-tab“
(请注意空格后面有一个尾随
)一起使用。但是,如果
设置“x=spaces,…,没有尾随空格,…”
@JosefZ:是的,它恐怕会失败。我有一个额外的
设置“x=%x%”
行来避免这个问题,但是为了使这个方法适合“一行”,我做了一些欺骗<代码>;-)非常努力,@Aacini,谢谢!如果你在答案中以某种方式提到所需的尾随空格(可能是
rem
),那就太酷了。此外,我发现一些字符会引起麻烦:
%
符号(在处理之前必须加倍),
标记(它们只是消失;也包括
^!
^!
序列)和双引号
;如果你在回答中提到这些限制,那也太好了。我刚刚发现两个或多个连续的空格通过这个命令行被更改为一个空格…@aschipfl:two posts在包含一个空格后(这是我第三次在这里包含这样的链接),我发布了一个对这个方法的修改,并解释如下:“我意识到我以前修剪前导空格和尾随空格的方法也将单词之间的几个空格减少为一个。下面的新方法正确地保留了单词之间的多个空格”。
"  two spaces, trimmed text string, space-tab-space _ "
"two spaces, trimmed text string, space-tab-space"
@echo off
setlocal EnableDelayedExpansion

set "x=  two spaces, trimmed text string, space-space-space   "
echo "%x%"

rem The single line:
set "word=%x: =" & (if "!word!" neq "" set "x2=!x2! !word!") & set "word=%" & set "x2=!x2:~1!"

echo "%x2%"
set "STRING=  two spaces, trimmed text string, space-tab-space _ "

rem no "delims=" option given, so defaulting to spaces and tabs:
for /F "tokens=* eol= " %%S in ("%STRING%") do set "LEFTTRIMMED=%%S"

echo "%LEFTTRIMMED%"