相关疑难解决方法(0)

如何在不使用任何外部工具的情况下使用批处理文件压缩(/ zip)和解压缩(/解压缩)文件和文件夹?

我知道这里有很多类似的问题,但我对答案(甚至是问题)都不满意.

主要目标是兼容性 - 它应该适用于最广泛的Windows机器(包括XP,Vista,Win2003 - 它们共同占据了大约20%的Windows共享),并且生成的文件应该可以在Unix/Mac机器上使用(所以标准存档/压缩格式是优选的).

选项有哪些:

  1. 创建一个实现一些zip算法的批处理.显然这是可能的 - 但只能使用单个文件并使用CERTUTIL进行二进制处理(某些机器默认情况下没有CERTUTIL,并且无法在WinXP Home Edition上安装)
  2. 通过WSH 使用shell.application.根据我的最佳选择.它允许压缩整个目录,并且可以在每台Windows机器上使用
  3. Makecab - 尽管压缩不是那么便携,但它可以在每台Windows机器上使用.一些外部程序如7zip能够提取.CAB内容,但是当需要在Unix/Mac上使用文件时它会不那么方便.并且压缩时单个文件非常简单,保留目录结构需要更多的努力.
  4. 使用.NET Framework - 不是那么好的选项.Form .NET 2.0有 GZipStream但它只允许压缩单个文件..NET 4.5具有Zip功能,但在Vista和XP上不支持.甚至更多 - 默认情况下不会在XP和Win2003上安装.NET,但由于很可能将.NET 2.0升级到4.0,因此它是一个相当大的选择.
  5. Powershell - 因为它依赖于.NET,它具有相同的功能.默认情况下,它不会安装在XP,2003和Vista上,所以我会跳过它.

.net zip batch-file jscript

42
推荐指数
3
解决办法
7万
查看次数

"X未被识别为内部或外部命令,可操作程序或批处理文件"的原因是什么?

我有一个在命令行中完美运行的单行代码段,但在我作为批处理脚本的一部分运行时失败并引发错误.

以下命令按预期运行,删除文件夹中的所有空子文件夹.

for /f "delims=" %d in ('dir /s /b /ad ^| sort /r') do rd "%d"
Run Code Online (Sandbox Code Playgroud)

但是,当放入批处理文件时...

FOR /f "delims=" %%d in ('dir /s /b /ad ^| sort /r') do rd "%%d"
Run Code Online (Sandbox Code Playgroud)

...它抛出了标准错误:

排序不被识别为内部或外部命令

我一直在尝试了一个小时左右,有和没有逃脱管,改变的选项的顺序,查找两者的文件dirsort等等,但我还是没能弄清楚这是怎么回事这里.批处理文件的其余部分(只有几行)工作正常,这是其中唯一失败的行.

有人可以帮忙吗?

windows cmd batch-file

3
推荐指数
2
解决办法
4万
查看次数

标签 统计

batch-file ×2

.net ×1

cmd ×1

jscript ×1

windows ×1

zip ×1