[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. "C:\Program Files\7-Zip\7z.exe" a ab.7z .\a\* .\b\*
复制代码
1

评分人数

TOP

回复 4# 5i365
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /ad') do set "a=!a! .\%%i\*"
  4. echo %a%
  5. pause
复制代码

TOP

回复 6# 5i365
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /ad') do set "a=!a! ".\%%i\*""
  4. "C:\Program Files\7-Zip\7z.exe" a ab.7z %a% -p123 -v1023m
  5. pause
复制代码

TOP

本帖最后由 idwma 于 2021-12-31 17:50 编辑

回复 8# 5i365


    1.%a%改成!a!,&之间可能还要用()括起来
2.
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad') do "C:\Program Files\7-Zip\7z.exe" a "%%i.7z" ".\%%i\*" -p123 -v1023m
  3. pause
复制代码

TOP

回复 10# 5i365

什么软件,如果只支持一条命还可以试试cmd /c "dir"的方式
循环放在一行的问题,举几个例子,不知道这样好不好理解
  1. for /f "delims=" %%i in ('dir /b /ad') do echo a
  2. echo b
  3. for /f "delims=" %%i in ('dir /b /ad') do echo a&echo b
  4. for /f "delims=" %%i in ('dir /b /ad') do (echo a)&echo b
  5. (for /f "delims=" %%i in ('dir /b /ad') do echo a)&echo b
复制代码

TOP

回复 12# 5i365
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad') do (
  3. "C:\Program Files\7-Zip\7z.exe" a "%%i.7z" ".\%%i\*" -p123 -v1023m
  4. for /f "tokens=3" %%j in ('dir /-c "%%i.7z.001"') if %%j lss 1073741824 ren "%%i.7z.001" "%%i.7z"
  5. )
  6. pause
复制代码

TOP

回复 14# 5i365


    大意了if前面少了do加上去就好了

TOP

回复 16# 5i365
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad') do (
  3.     "C:\Program Files\7-Zip\7z.exe" a "%%i.7z" ".\%%i\*" -p123 -v1023m
  4.     for /f "tokens=3" %%j in ('dir /-c "%%i.7z.001"') do (
  5.         if %%j lss 200 (
  6.             del "%%i.7z.001"
  7.         ) else if %%j lss 1073741824 (
  8.             ren "%%i.7z.001" "%%i.7z"
  9.         )
  10.     )
  11. )
  12. pause
复制代码

TOP

回复 19# 5i365
  1. cmd /c "@echo off&for /f "delims=" %%i in ('dir /b /ad') do ("C:\Program Files\7-Zip\7z.exe" a "%%i.7z" ".\%%i\*" -p123 -v1023m& for /f "tokens=3" %%j in ('dir /-c "%%i.7z.001"') do (if %%j lss 200 (del "%%i.7z.001") else if %%j lss 1073741824 (ren "%%i.7z.001" "%%i.7z")))"
复制代码

TOP

回复 21# 5i365


    没有过滤第二个循环里dir的结果,这个错误提示不影响的
  1. dir /-c "%%i.7z.001"|findstr "%%i.7z.001"
复制代码
自动转单行这个不会呀

TOP

回复 26# 5i365


    为什么要去掉for?

TOP

回复 28# 5i365


    里面那层截取大小的for还是要留的

TOP

回复 41# 5i365


    放到bat出错%改成foreach就好了
显示不一样,结果是一样的,win7自带的没有这个参数
  1. (dir -dir).name | %{ $a+=' "{0}" ' -f ".\$_\*" }
  2. $a
复制代码

TOP

回复 51# 5i365
  1. powershell -version 2.0 "&'C:\Program Files\7-Zip\7z.exe' a all.7z $(dir|where{$_.PSIsContainer}|foreach{$a+='{0}.\{1}\*{0} ' -f [char]34,$_};$a)"
  2. pause
复制代码

TOP

返回列表