Windows 批量删除默认分隔符中的空格
我想迭代一个类似csv的字符串:element;元素;元素;[...];元素 因此,我使用了这种类型的循环:Windows 批量删除默认分隔符中的空格,windows,batch-file,cmd,Windows,Batch File,Cmd,我想迭代一个类似csv的字符串:element;元素;元素;[...];元素 因此,我使用了这种类型的循环: for %%a in (%%l) do ( code ... ) 使用%%a我的元素和%%l我的行 这是可行的,但我有一个问题。我的元素中可以有一个空格,循环会自动计算一个元素和两个元素的空格。例如,如果我将05/05/2015 15:05:12作为一个元素,它将在两圈内解析,05/05/2015然后15:05:12。所以,我想删除空间作为拆分器。有可能吗?for使用空格、制
for %%a in (%%l) do (
code ...
)
使用%%a我的元素和%%l我的行
这是可行的,但我有一个问题。我的元素中可以有一个空格,循环会自动计算一个元素和两个元素的空格。例如,如果我将05/05/2015 15:05:12作为一个元素,它将在两圈内解析,05/05/2015然后15:05:12。所以,我想删除空间作为拆分器。有可能吗?for
使用空格、制表符、、、
、=
和非中断空格(ASCII0xFF
)作为分隔符(类似于cmd
),除非它们包含在一对“
中
我们可以利用这一点:
rem The following is placed inside your `for /F` loop:
set "LINE=%%l"
setlocal EnableDelayedExpansion
for %%a in ("!LINE:;=";"!") do (
rem Use `%%~a` here to remove quotes.
)
endlocal
部分“!行:=";"!“
在之间括一行”
并用替换每个分隔符;
”;“
,因此我们得到了一个被引用的;
分隔项目的列表
例如,行…:
…变成这样:
因此,空格出现在一对“
”之间,因此它不再被视为分隔符
请注意,此处必须使用,因为在同一代码块中写入和读取一个变量(行),即您的for/F%%l
循环。for
使用空格、制表符、、、
、=
和非中断空格(ASCII0xFF
)作为分隔符(类似于cmd
),除非它们包含在一对“
中
我们可以利用这一点:
rem The following is placed inside your `for /F` loop:
set "LINE=%%l"
setlocal EnableDelayedExpansion
for %%a in ("!LINE:;=";"!") do (
rem Use `%%~a` here to remove quotes.
)
endlocal
部分“!行:=";"!“
在之间括一行”
并用替换每个分隔符;
”;“
,因此我们得到了一个被引用的;
分隔项目的列表
例如,行…:
…变成这样:
因此,空格出现在一对“
”之间,因此它不再被视为分隔符
请注意,这里必须使用,因为在同一代码块中写入和读取了一个变量(LINE
),即您的for/F%%l
循环。使用for/F
。使用“delims=;”,我迭代第一个元素,但不迭代其他元素……将%l
存储在类似集的中间变量中“LINE=%%l”
,然后执行此操作(假设已启用):对于%%a in(“!LINE:;=”;“;”!”)执行(rem在此处使用%%a`删除引号)`aschipfl解决方案有效,谢谢!使用代替/F
。使用“delims=”;“,我迭代第一个元素,但不迭代其他元素…将%%l
存储在中间变量中,如设置“LINE=%%l”
,然后执行此操作(假设已启用):对于%%a in(“!LINE:;=”;“;”!”)执行(rem在此处使用%%a`删除引号。)`@aschipfl解决方案很有效,谢谢!谢谢,这是一个很好的代码解释!谢谢,这是一个很好的代码解释!
"element";"05/05/2015 15:05:12";"element"