返回列表 发帖
"C:\Program Files\7-Zip\7z.exe" a ab.7z .\a\* .\b\*COPY
1

评分人数

TOP

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

TOP

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

TOP

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

回复 8# 5i365


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

TOP

回复 10# 5i365

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

TOP

回复 12# 5i365
@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"') if %%j lss 1073741824 ren "%%i.7z.001" "%%i.7z"
)
pauseCOPY

TOP

回复 14# 5i365


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

TOP

回复 16# 5i365
@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"
        )
    )
)
pauseCOPY

TOP

回复 19# 5i365
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")))"COPY

TOP

回复 21# 5i365


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

TOP

回复 26# 5i365


    为什么要去掉for?

TOP

回复 28# 5i365


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

TOP

回复 41# 5i365


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

TOP

回复 51# 5i365
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)"
pauseCOPY

TOP

返回列表