[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

希望可以实现: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

搞了一个很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. ::使用set进行设置变量,并使用/p参数让命令暂停运行,提供用户在cmd窗口输入变量的机会
  9. set /p var=请输入要解压的文件名称(以,分割,输入0默认全部解压):  
  10. if   "%var%" == "0" (
  11. dir /b *.*>extract_test002.txt
  12. )else (
  13. @echo %var%  > extract_test001.txt
  14. ::将之前的文件中,替换为换行符,重新生成文件
  15. for /f %%h in ('copy /z %0 nul') do set crlf=%%h^
  16. (for %%h in ("!crlf!") do (
  17. for /f "delims=" %%b in (extract_test001.txt) do (
  18. endlocal
  19. set "str=%%b"
  20. setlocal enabledelayedexpansion
  21. echo !str:,=%%~h!
  22. )
  23. ))>extract_test002.txt
  24. del extract_test001.txt)
  25. set n=0
  26. for /f "delims=" %%b in ('type "extract_test002.txt"') do set /a n+=1
  27. ::批量解压
  28. set t=0
  29. for /f "delims=" %%i in (extract_test002.txt) do (
  30. set /a t=!t!+1
  31. echo  -------------------------------解压第!t!个文件,一共有%n%个文件---------------------.
  32. "C:\Program Files\7-Zip\7z.exe" x %%i -y  -aos -o.\%%~ni\
  33. )
  34. del extract_test002.txt
  35. pause
复制代码

TOP

返回列表