从zip文件获取文件名

可忍受的

我想创建一个小脚本来解析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在文件末尾加倍(替换为替代)。

现在,使用tokensdelims实际上您可以“拆分”每行,并查看是否符合您的条件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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章