我想创建一个小脚本来解析Mapfiles.zip及其内容之后的目录。目前,我陷入了多重for循环的困境。我只想列出zip内容并获取文件名,然后插入zip文件旁边的version.txt中。例如
Path = z:\sdfasdf\asdgdfg\njfds\Mapfiles.zip
Content:
2014-01-13 21:06:28 ..... 8821287 1503025 9.10.25.359333.2014_01_13_21_06_28.txt
2014-01-13 21:07:32 ..... 8821287 1503025 9.10.25.359333.2014_01_13_21_07_30.txt
因此,最终目标是z:\ sdfasdf \ asdgdfg \ njfds \ version.txt应包含“ 9.10.25.359333”
@echo off
setlocal
FOR /F "tokens=* delims=" %%A in ('dir /b /s z:\sdfasdf\asdgdfg\njfds\*.zip') do (
for /f "delims=" %%a in ('dir /S /b %%A') do ( set path2=%%a
)
set path2=%path2:Mapfiles.zip=''%
for /f "delims=" %%b in ('7z.exe l "%%A" | findstr "iGO" ') do (
set var1=%%b
set var1=%var1:~54,-3%
)
echo.%var1%
)
)
我怎样才能正确地做到这一点?
您需要使用var > file
来打印出echo
结果。
或者,add
在文件末尾加倍(替换为替代)。
现在,使用tokens
&delims
实际上您可以“拆分”每行,并查看是否符合您的条件findstr
。
因此,例如:
@echo off
for /f "tokens=1,3 delims= " %%g in ('7z.exe l -slt %file%') do (
echo.%%g | findstr /b /c:"Path" 1>nul
if NOT errorlevel 1 (
echo.%%h >> list.txt
)
)
l -slt
告诉7z显示“显示技术信息” tokens=1,3
代币1和3抓住了第一和第三 delims=
我们将在这里使用“空间”的残差 findstr /b
在“ g”(第一个标记)的开头(/ b)中找到“路径” /c:Path
我们在第一个标记中查找“路径”,因为这是从7z列表中包含文件名的行开始的方式。errorlevel
找不到字符串时为1,所以...var >> file.txt
打印到“ list.txt”,但仅显示文件名(第二个标记) %%h
请注意,我们为第二个标记设置了一个相关字母,如果以g开头,那么下一个是h 现在,您将不得不在文件名,空格或您要过滤的内容中使用可能的特殊字符。
更多信息:
希望对您有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句