windows批处理脚本-为循环设置内部变量
也许我没有清楚地表达我的问题,下面是我实际做的代码:windows批处理脚本-为循环设置内部变量,windows,variables,batch-file,for-loop,Windows,Variables,Batch File,For Loop,也许我没有清楚地表达我的问题,下面是我实际做的代码: @echo off set /p keywords="Enter keywords to search: " %=% dir /b *.dat > filelist.txt for /f "delims=." %%f in (filelist.txt) do ( for /f "delims= " %%g in (%%f.dat) do ( 7z e %%g *sec.evtx dir /b *.ev
@echo off
set /p keywords="Enter keywords to search: " %=%
dir /b *.dat > filelist.txt
for /f "delims=." %%f in (filelist.txt) do (
for /f "delims= " %%g in (%%f.dat) do (
7z e %%g *sec.evtx
dir /b *.evtx > evtfile.txt
set /p tmpvar1=<evtfile.txt
del *.evtx
)
)
tsnint1.dat
webint1.dat
我面临的问题是,evtfile包含正确的内容,但tmpvar1没有按预期正确分配,我的错误是什么,如何纠正?非常感谢如果在同一块中设置(或更改)了某个变量,则需要延迟扩展才能在块中使用该变量。但是您可以设置变量,而无需延迟展开 请看这个小演示(我使用了一个简单的
if
构造,而不是for
,但是效果是一样的(不是if
或for
,而是块(在内部)(
和)
)
如果在同一块中设置(或更改)了某个变量,则需要延迟扩展才能在块中使用该变量。但您可以在不延迟扩展的情况下设置该变量 请看这个小演示(我使用了一个简单的
if
构造,而不是for
,但是效果是一样的(不是if
或for
,而是块(在内部)(
和)
)
如果在同一块中设置(或更改)了某个变量,则需要延迟扩展才能在块中使用该变量。但您可以在不延迟扩展的情况下设置该变量 请看这个小演示(我使用了一个简单的
if
构造,而不是for
,但是效果是一样的(不是if
或for
,而是块(在内部)(
和)
)
如果在同一块中设置(或更改)了某个变量,则需要延迟扩展才能在块中使用该变量。但您可以在不延迟扩展的情况下设置该变量 请看这个小演示(我使用了一个简单的
if
构造,而不是for
,但是效果是一样的(不是if
或for
,而是块(在内部)(
和)
)
这可能会有所帮助,使用您的代码作为基础。FWIW我希望您有多个
.evtx
文件的副本,如果它们对您很重要的话
@echo off
setocal enabledelayedexapnsion
for /f "delims=" %%f in ('dir /b *.dat') do (
for /f "delims=" %%g in ('type "%%f" ') do (
7z e "%%g" "*sec.evtx"
dir /b *.evtx > evtfile.txt
set /p tmpvar1=<evtfile.txt
echo !tempvar!
del *.evtx
)
)
@echo关闭
设置局部使能延迟解除
对于/f“delims=“%%f in('dir/b*.dat')do(
对于/f“delims=”%%g in('type“%%f“')do(
7z e“%%g”*秒evtx
dir/b*.evtx>evtfile.txt
set/p tmpvar1=这可能会有所帮助,使用您的代码作为基础。FWIW我希望您有多个.evtx
文件的副本,如果它们对您很重要的话
@echo off
setocal enabledelayedexapnsion
for /f "delims=" %%f in ('dir /b *.dat') do (
for /f "delims=" %%g in ('type "%%f" ') do (
7z e "%%g" "*sec.evtx"
dir /b *.evtx > evtfile.txt
set /p tmpvar1=<evtfile.txt
echo !tempvar!
del *.evtx
)
)
@echo关闭
设置局部使能延迟解除
对于/f“delims=“%%f in('dir/b*.dat')do(
对于/f“delims=”%%g in('type“%%f“')do(
7z e“%%g”*秒evtx
dir/b*.evtx>evtfile.txt
set/p tmpvar1=这可能会有所帮助,使用您的代码作为基础。FWIW我希望您有多个.evtx
文件的副本,如果它们对您很重要的话
@echo off
setocal enabledelayedexapnsion
for /f "delims=" %%f in ('dir /b *.dat') do (
for /f "delims=" %%g in ('type "%%f" ') do (
7z e "%%g" "*sec.evtx"
dir /b *.evtx > evtfile.txt
set /p tmpvar1=<evtfile.txt
echo !tempvar!
del *.evtx
)
)
@echo关闭
设置局部使能延迟解除
对于/f“delims=“%%f in('dir/b*.dat')do(
对于/f“delims=”%%g in('type“%%f“')do(
7z e“%%g”*秒evtx
dir/b*.evtx>evtfile.txt
set/p tmpvar1=这可能会有所帮助,使用您的代码作为基础。FWIW我希望您有多个.evtx
文件的副本,如果它们对您很重要的话
@echo off
setocal enabledelayedexapnsion
for /f "delims=" %%f in ('dir /b *.dat') do (
for /f "delims=" %%g in ('type "%%f" ') do (
7z e "%%g" "*sec.evtx"
dir /b *.evtx > evtfile.txt
set /p tmpvar1=<evtfile.txt
echo !tempvar!
del *.evtx
)
)
@echo关闭
设置局部使能延迟解除
对于/f“delims=“%%f in('dir/b*.dat')do(
对于/f“delims=”%%g in('type“%%f“')do(
7z e“%%g”*秒evtx
dir/b*.evtx>evtfile.txt
set/p tmpvar1=将行设置tmpvar1
放在del*.evtx
之前,并告诉我们提示回复的输出,但是,添加此行不会影响输出2行应与预期相同,但是,当前输出为:WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx WEBINT1-secct输出-但它可以给我们一个提示,到底出了什么问题。那么它说什么=添加该行后输出保持不变将该行设置tmpvar1
放在del*.evtx
之前,并告诉我们输出,以便及时回复,但是,添加该行不会影响输出2行,但是,当前输出为:WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec1209-sec.evtx WEBINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx不,它不会影响输出-但它可以给我们一个提示,出了什么问题。那么它说什么=添加该行后输出保持不变将该行设置为tmpvar1
放在del*.evtx
之前,并告诉我们prom的输出然而,pt回复,添加此线路不会影响输出2线路应与预期相同,但是,当前输出为:WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx TSNINT1-20131209-sec.evtx WEBINT1-20131209-sec.evtx-TSNINT1-20131209-sec.evtx-WEBINT1-20131209-sec.evtx-TSNINT1-20131209-sec.evtx-WEBINT1-20131209-sec.evtx-WEBINT1-20131209-sec.evtx-WEBINT1-20131209-sec.evtx
@echo off
setocal enabledelayedexapnsion
for /f "delims=" %%f in ('dir /b *.dat') do (
for /f "delims=" %%g in ('type "%%f" ') do (
7z e "%%g" "*sec.evtx"
dir /b *.evtx > evtfile.txt
set /p tmpvar1=<evtfile.txt
echo !tempvar!
del *.evtx
)
)