找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23300|回复: 2

[文本处理] 想实现批量输入文件名,再批量解压(如何在FOR循环里面添加参数及正则表达式)

[复制链接]
发表于 2018-1-10 10:48:17 | 显示全部楼层 |阅读模式
希望可以实现:1. 列出所有文件名  2. 输入指定文件名  3. 批量解压
目前是批量解压了改目录下全部文件(1和3),但是2不知道该如何实现。

我尝试了下:set /p var=请输入要解压的文件名称(以;分割):   
但是在For循环里面不知道一个如何修改:
for %%i in (*.zip) do


目前代码如下:

@echo off
setlocal enabledelayedexpansion
set n=-1
for /f "delims=" %%a in ('dir /b .') do (
set /a n=n+1
echo %%a
)
pause               
set t=0

::使用set进行设置变量,并使用/p参数让命令暂停运行,提供用户在cmd窗口输入变量的机会
set /p var=请输入要解压的文件名称(以;分割):   

for %%i in (*.zip) do (
set /a t=!t!+1
echo  -------------------------------解压第!t!个文件,一共有%n%个文件---------------------.
"C:\Program Files\7-Zip\7z.exe" x %%i -y  -aos -o.\%%~ni\
)
pause
 楼主| 发表于 2018-1-10 12:02:31 | 显示全部楼层
搞了一个很sb的方式,先凑合着用了。。

  1. @echo off

  2. set /p file_load=请输入文件路径(例如D:\test,默认当前路径):  
  3. cd /d %file_load%

  4. setlocal enabledelayedexpansion
  5. for /f "delims=" %%a in ('dir /b .') do (
  6. echo %%a
  7. )
  8.                

  9. ::使用set进行设置变量,并使用/p参数让命令暂停运行,提供用户在cmd窗口输入变量的机会
  10. set /p var=请输入要解压的文件名称(以,分割,输入0默认全部解压):  

  11. if   "%var%" == "0" (
  12.         dir /b *.*>extract_test002.txt
  13. )else (
  14.                 @echo %var%  > extract_test001.txt


  15.                 ::将之前的文件中,替换为换行符,重新生成文件
  16.                 for /f %%h in ('copy /z %0 nul') do set crlf=%%h^


  17.                 (for %%h in ("!crlf!") do (
  18.                 for /f "delims=" %%b in (extract_test001.txt) do (
  19.                         endlocal
  20.                         set "str=%%b"
  21.                         setlocal enabledelayedexpansion
  22.                         echo !str:,=%%~h!
  23.                         )
  24.                 ))>extract_test002.txt
  25.                 del extract_test001.txt)


  26. set n=0
  27. for /f "delims=" %%b in ('type "extract_test002.txt"') do set /a n+=1

  28. ::批量解压
  29. set t=0
  30. for /f "delims=" %%i in (extract_test002.txt) do (
  31. set /a t=!t!+1
  32. echo  -------------------------------解压第!t!个文件,一共有%n%个文件---------------------.
  33. "C:\Program Files\7-Zip\7z.exe" x %%i -y  -aos -o.\%%~ni\
  34. )

  35. del extract_test002.txt

  36. pause
复制代码
发表于 2018-1-10 16:58:12 | 显示全部楼层
本帖最后由 /zhqsystem/zhq 于 2018-1-10 17:04 编辑

set "#=0"
for /f "delims=" %%a in ('dir/a-d/s/b "%#zippath%\*.zip"')do (
set/a #+=1
set "$!#!=%%~fa"
)
for /l %%n in (1,1,%#%)do if defined #%%n (
echo,回显"!$%%n!"
set "$="
set/p "$=执行输入任意字符;不执行直接回车
if defined $ (
  echo,未跳过:"!$%%n!"
  rem:执行的命令行
)else (
  echo,已跳过:"!$%%n!"
)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 02:01 , Processed in 0.018157 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表