我想我有一个简单的问题。我有一个文件,我正在尝试将输出格式化为列。我想我找到了一种方法,但是string1和string2变量没有设置。有任何想法吗?我不熟悉Windows脚本,而且来自Linux,它更容易。
制作本:
San Disk USB Drive, 10-12-2013
Superdrive Disk USB Drive, 10-11-2013
看起来像这样:
San Disk USB Drive 10-12-2013
Superdrive Disk USB Drive 10-11-2013
我正在使用的代码来阅读文本文件:
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ temp_sorted_usb_history.txt"`) do (
set "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
echo(!var!
for /F "tokens=1,2 delims=," %%b in ("!var!") do (
echo %%b%%c
set string1=%%b
set string2=%%c
set string1="%string1% "
set string2="%string2% "
echo !string1:~-40! !string2:~-40!
)
ping -n 4 -w 1 127.0.0.1 >NUL
ENDLOCAL
)
问题是我无法设置字符串变量。
答案 0 :(得分:3)
我不明白你为什么使用findstr
命令。这就是我这样做的方式:
setlocal EnableDelayedExpansion
for /F "tokens=1,2 delims=," %%b in (temp_sorted_usb_history.txt) do (
echo %%b%%c
set "string1=%%b "
set "string2=%%c "
echo !string1:~0,40! !string2:~0,40!
)
ping -n 4 -w 1 127.0.0.1 >NUL
答案 1 :(得分:1)
使用setlocal enabledelayedexpansion
括号中的变量称为!变量!而不是%变量%
你有两个不使用的字符串!变量!符号,他们应该。
然而,您可以使用这种语法,其中引号实际上不是变量的一部分,并消除了另外两行。
set "string1=%%b "
set "string2=%%c "
另一种选择可能是将日期放在首位,按日期排序很简单。
@echo off
for /F "tokens=1,2 delims=," %%b in (temp_sorted_usb_history.txt) do (
echo %%c - %%b
)