Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
windows批处理脚本-为循环设置内部变量_Windows_Variables_Batch File_For Loop - Fatal编程技术网

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
   )
)