【发布时间】:2016-05-06 00:57:59
【问题描述】:
我写了一个批处理脚本:
@echo off
set "zip=C:\Program Files\7-Zip\7z.exe"
for %%f in (%*) do (
if exist "%%~f\" (
"%zip%" a -tzip "%%~f.zip" "%%~f\*" -mx0
) else (
"%zip%" a -tzip "%%~f.zip" %%f -mx0
)
)
当用户选择多个文件/文件夹并将它们拖到脚本文件中时,拖动的每个文件/文件夹都会打包成一个 zip 文件。
在大多数情况下都可以正常工作。但是,如果被拖动的文件位于文件名包含括号的目录中,例如“myfolder(large)”,则脚本将失败。
谁能告诉这个问题的原因以及如何解决它?
【问题讨论】:
-
它很可能会失败,因为括号是批处理文件中的运算符。正如您在
do声明中看到的那样?当您使用带括号的文件时,它可能会尝试找到另一个操作。是否绝对有必要使用括号?如果是这样,那么您需要研究一种使用textA = "text(name)"等(或类似代码)设置值的方法,以确保括号被读取为变量,而不是另一个函数。这可能不是正在发生的问题,但这是我的最佳猜测。 -
尝试将
dir /a %%f替换为dir /a "%%~f",并在最后一行中将%%f -mx0替换为"%%~f" -mx0。 -
@rojo 试过了,不行。
-
请edit您的问题并显示呼叫线路以查看
%*解决的问题。
标签: windows batch-file