Batch file 未在For循环中设置字符串变量
我想我有一个简单的问题。我有一个文件,试图将输出格式化为列。我想我在这里找到了一种方法,但是string1和string2变量没有设置。有什么想法吗?我不熟悉Windows脚本编写,来自Linux,在Linux中编写脚本要容易得多 这样做:Batch file 未在For循环中设置字符串变量,batch-file,Batch File,我想我有一个简单的问题。我有一个文件,试图将输出格式化为列。我想我在这里找到了一种方法,但是string1和string2变量没有设置。有什么想法吗?我不熟悉Windows脚本编写,来自Linux,在Linux中编写脚本要容易得多 这样做: San Disk USB Drive, 10-12-2013 Superdrive Disk USB Drive, 10-11-2013 像这样: San
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
)
问题是我无法设置字符串变量。使用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
)
使用setlocal启用DelayedExpansion 括号中的变量称为!变量而不是%变量% 您有两个不使用的字符串!变量符号,它们应该 但是,如果引号不是变量的一部分,可以使用这种语法样式,并删除另外两行
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
)
我不明白您为什么要使用
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
我不明白您为什么要使用
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
尝试以下操作:
FOR/F“delims=“%%a in('findstr/n“^”temp\u sorted\u usb\u history.txt“)
。可能是重复的感谢,它实际上正确捕获了行,脚本中的变量没有设置。我改为使用“or/F”标记=1,2 delims=,“%(temp_sorted_usb_history.txt)do中的%%b”。感谢您的回复!尝试以下操作:FOR/F“delims=“%%a in('findstr/n“^”temp\u sorted\u usb\u history.txt“)
。可能是重复的感谢,它实际上正确捕获了行,脚本中的变量没有设置。我改为使用“or/F”标记=1,2 delims=,“%(temp_sorted_usb_history.txt)do中的%%b”。感谢您的回复!谢谢我读到人们使用findstr来回避一些我并不清楚的问题。下面是使用它的理由的链接:。findstr
主要用于读取空行或枚举行,但您的问题没有这些要点,不是吗?谢谢,顺便说一句,脚本现在运行得很好!谢谢我读到人们使用findstr来回避一些我并不清楚的问题。下面是使用它的理由的链接:。findstr
主要用于读取空行或枚举行,但您的问题没有这些要点,不是吗?谢谢,顺便说一句,脚本现在运行得很好!谢谢我还在努力找出不同之处。。。Linux没关系,谢谢!我还在努力找出不同之处。。。没关系。。