标题: [文本处理] 想实现批量输入文件名,再批量解压(如何在FOR循环里面添加参数及正则表达式) [打印本页]
作者: ck59505 时间: 2018-1-10 10:48 标题: 想实现批量输入文件名,再批量解压(如何在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
作者: ck59505 时间: 2018-1-10 12:02
搞了一个很sb的方式,先凑合着用了。。- @echo off
-
- set /p file_load=请输入文件路径(例如D:\test,默认当前路径):
- cd /d %file_load%
-
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b .') do (
- echo %%a
- )
-
-
- ::使用set进行设置变量,并使用/p参数让命令暂停运行,提供用户在cmd窗口输入变量的机会
- set /p var=请输入要解压的文件名称(以,分割,输入0默认全部解压):
-
- if "%var%" == "0" (
- dir /b *.*>extract_test002.txt
- )else (
- @echo %var% > extract_test001.txt
-
-
- ::将之前的文件中,替换为换行符,重新生成文件
- for /f %%h in ('copy /z %0 nul') do set crlf=%%h^
-
-
- (for %%h in ("!crlf!") do (
- for /f "delims=" %%b in (extract_test001.txt) do (
- endlocal
- set "str=%%b"
- setlocal enabledelayedexpansion
- echo !str:,=%%~h!
- )
- ))>extract_test002.txt
- del extract_test001.txt)
-
-
- set n=0
- for /f "delims=" %%b in ('type "extract_test002.txt"') do set /a n+=1
-
- ::批量解压
- set t=0
- for /f "delims=" %%i in (extract_test002.txt) do (
- set /a t=!t!+1
- echo -------------------------------解压第!t!个文件,一共有%n%个文件---------------------.
- "C:\Program Files\7-Zip\7z.exe" x %%i -y -aos -o.\%%~ni\
- )
-
- del extract_test002.txt
-
- pause
复制代码
作者: /zhqsystem/zhq 时间: 2018-1-10 16:58
本帖最后由 /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!"
)
)
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |