我很可能在这个主题中找到了问题的答案:
用户@Enteleform 发布了一条回答还有一个脚本,用于创建批处理文件,将一些文件夹拖放到其中,然后开始为每个文件夹/文件创建存档。它正在工作,但我想更改输出目录。他写道可以在“archivePath”中完成,但我不明白它是如何工作的。
我像这样添加我的输出目录
Set archivePath="E:\test output dir\%%~x.zip"
但我只得到错误:
--------------------------------------------------------
7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21
Scanning the drive: 3 files, 1208464 bytes (1181 KiB)
Creating archive: E:\test output dir\E:\test main dir\Caroline.zip
Add new data to archive: 3 files, 1208464 bytes (1181 KiB)
Error: cannot open file E:\test output dir\E:\test main dir\Caroline.zip
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
System ERROR:
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
--------------------------------------------------------
7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21
Scanning the drive: 31 files, 631241499 bytes (602 MiB)
Creating archive: E:\test output dir\E:\test main dir\pictures.zip
Add new data to archive: 31 files, 631241499 bytes (602 MiB)
Error: cannot open file E:\test output dir\E:\test main dir\pictures.zip
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
System ERROR:
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
--------------------------------------------------------
ERROR @:"E:\test main dir\Caroline\*"
ERROR @:"E:\test main dir\pictures\*"
Drücken Sie eine beliebige Taste . . .
如果我只添加不带 %%~x.zip 的输出目录,它就可以部分工作,这样它会使用正确的输出,但它会创建一个没有名称的 zip 文件。
有人知道哪里出了问题吗?
编辑:这是来自 Enteleform 的原始脚本
@Echo OFF
SetLocal EnableDelayedExpansion
Rem // 7-Zip Executable Path
Set sevenZip="C:\Program Files\7-Zip\7z.exe"
Rem // START: NewLine Variable Hack
Set newLine=^
Rem // END: NewLine Variable Hack !! DO NOT DELETE 2 EMPTY LINES ABOVE !!
Rem // Set ErrorLog Variables
Set errorCount=0
Set separator=--------------------------------------------------------
Set errorLog=!newLine!!newLine!!separator!!newLine!!newLine!
Set errorPrefix=ERROR @:
Set successMessage=All Files Were Successfully Archived
Rem // Loop Through Each Argument
SetLocal DisableDelayedExpansion
for %%x in (%*) do (
Rem // Use Current Argument To set File, Folder, & Archive Paths
SetLocal DisableDelayedExpansion
Set filePath="%%~x"
Set directoryFiles="%%~x\*"
Set archivePath="%%~x.zip"
SetLocal EnableDelayedExpansion
Rem // Source Is A Folder
if exist !directoryFiles! (
Set sourcePath=!directoryFiles!
)
Rem // Source Is A File
if not exist !directoryFiles! (
Set sourcePath=!filePath!
)
Rem // Print Separator To Divide 7-Zip Output
echo !newLine!!newLine!!separator!!newLine!!newLine!
Rem // Add Files To Zip Archive
!sevenZip! A -TZIP !archivePath! !sourcePath!
Rem // Log Errors
if ErrorLevel 1 (
Set /A errorCount=errorCount+1
Set errorLog=!errorLog!!newLine!!errorPrefix!!sourcePath!
)
)
Rem // Print ErrorLog
if !errorCount!==0 (
Set errorLog=!errorLog!!newLine!!successMessage!
)
Echo !errorLog!!newLine!!newLine!!newLine!
Rem // Keep Window Open To View ErrorLog
pause
我知道这与主题无关,但有人批评“声誉”系统:我想在旧主题中发表评论,但由于声誉系统,我必须创建一个新问题,而不仅仅是在现有问题中发表评论......
您希望我在添加新问题之前查找现有的类似问题,但如果我作为新用户无法回答或评论现有问题,那就没有意义了。