use*_*265 17 windows batch-file
我有这种模式的文件夹结构.我刚刚在每个子目录中显示了两个子目录和2个文件,但通常我在单个级别上有n个子目录,在它们下面有单个级别的文件(但可以是n个文件).
Directory master
subDirectory x:
file1
file2
Directory y:
file 3
file 4
Run Code Online (Sandbox Code Playgroud)
我需要创建一个Windows脚本,一个从主目录运行的批处理文件,并给我两个包含各自文件的zip文件x.zip和y.zip.
我知道我的脚本必须使用for和zip命令但我正在试图让它工作,因为我无法理解这些命令的语法和谷歌搜索似乎没有帮助.
我找到了这样的命令, for %f in ("*.*") do zip "%~nf.zip" "%f" 但它似乎只有在没有子文件夹的情况下才直接存在.
Mag*_*goo 20
for /d %%a in (*) do (ECHO zip -r -p "%%~na.zip" ".\%%a\*")
Run Code Online (Sandbox Code Playgroud)
应该在一批内工作.
请注意,我已经包含了一个ECHO简单地显示建议的命令.您需要删除ECHOkeywor以执行命令.
小智 11
我知道它太晚了,但如果你还想尝试
for /d %%X in (*) do (for /d %%a in (%%X) do ( "C:\Program Files\7-Zip\7z.exe" a -tzip "%%X.zip" ".\%%a\" ))
Run Code Online (Sandbox Code Playgroud)
这里*是当前文件夹.有关更多选项,请尝试此链接
你在附近:)
首先,批处理(%%变量)和Windows CMD(%变量)使用不同的变量命名.其次,我不知道你如何使用CMD的zip.这是来自我认为的Linux用户.在Win上使用内置的zip操作并不简单,使用批处理脚本更难.
但无论如何你很幸运.我从cygwin包中获取(提取到目标文件夹)zip.exe和cygwin1.dll(3mb文件大小),并立即开始播放.
当然,我使用CMD进行更好/更快的测试而不是批量.只记得在怪我之前修改%varname到%% varname:P
for /d %d in (*) do zip -r %d %d
说明:
for /d ...匹配内部的任何文件夹.只有忽略文件的文件夹.(用于/ f到文件匹配)
for /d %d in ...%d告诉cmd您想要为您的变量分配名称吗?我把d匹配widh d(目录含义).
for /d %d in (*) ...很重要.这使我CD成为所需的文件夹,或从中运行.(*)这将意味着所有这个目录,因为我们使用/d的文件没有被处理,所以不需要设置模式,即使你只需要一些文件夹.您可以使用绝对路径.不确定批次亲戚的问题.
for /d %d in (*) do zip -r ...ZIP是显而易见的.(exec zip本身并查看帮助显示以使用您的自定义规则).r-用于递归,因此将添加任何内容.
for /d %d in (*) do zip -r %d %d 第一个%d是zip名称.您可以尝试使用myzip.zip,但如果失败,因为如果您有2个或更多文件夹,则第二个不能给出第一个文件夹的名称,并且不会在没有更多参数的情况下覆盖.因此,我们将%d传递给两者,这是当前迭代文件夹名称压缩到具有文件夹名称的文件中.不必附加".zip"来命名.
在开始玩的时候比我预期的要短.
无需外部依赖7zip或ZIP-创建一个vbs脚本并执行:
@ECHO Zipping
mkdir %TEMPDIR%
xcopy /y /s %FILETOZIP% %TEMPDIR%
echo Set objArgs = WScript.Arguments > _zipIt.vbs
echo InputFolder = objArgs(0) >> _zipIt.vbs
echo ZipFile = objArgs(1) >> _zipIt.vbs
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar) >> _zipIt.vbs
echo Set objShell = CreateObject("Shell.Application") >> _zipIt.vbs
echo Set source = objShell.NameSpace(InputFolder).Items >> _zipIt.vbs
echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipIt.vbs
@ECHO *******************************************
@ECHO Zipping, please wait..
echo wScript.Sleep 12000 >> _zipIt.vbs
CScript _zipIt.vbs %TEMPDIR% %OUTPUTZIP%
del _zipIt.vbs
rmdir /s /q %TEMPDIR%
@ECHO *******************************************
@ECHO ZIP Completed
Run Code Online (Sandbox Code Playgroud)
小智 5
从 Windows 10 build 17063 开始,您可以使用 TAR。 MSDN链接
例如,要为文件夹 Reports 中名为文件夹 XYZ 的目录创建 zip 文件,您可以在命令提示符中输入以下内容。
tar -cf XYZ.zip \Reports\XYZ
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
187350 次 |
| 最近记录: |