我有一个脚本文件centercrop50.bat,主要用于文件夹中所有jpg图像的裁剪:
for %%i in (*.jpg) do convert %%i -gravity Center -crop 50%%x+0+0 cc50_%%i
convert是我用imagemagick安装的CLI命令。
实际上,我从一个大的pic目录中选择要处理的几个文件,用这个脚本将它们复制到一个工作台文件夹,然后我想在工作台目录中的那些文件上启动脚本。
现在我在测试使用时学到了,当我意外地将文件直接丢弃到脚本而不是目录时,这个脚本也会触发。差异取决于文件的dropzone,可能很微妙。
在这种情况下,意外的是所有foto都是拖动操作符的源文件夹将由for循环处理。
这意味着该脚本将在我的原始图片库上工作[sic!,omg !!]
这对我来说风险很大,而且我不打算让脚本去做。
因此,我需要一些信封编码来检测脚本是否有动作处理脚本源路径之外的文件,并在这种情况下完全跳过裁剪。
我发现脚本的源路径可以使用%~dp0进行评估,但后来我有点卡住,因为我对CMD脚本没有太多经验丰富。
你能提供帮助吗?
答案 0 :(得分:1)
所以你需要的是检测你的脚本是用参数调用还是直接调用。
在cmd中,传递给脚本的参数称为%1%2 ...或者您有包含所有参数的%*。
如果使用参数调用它,则该脚本不执行任何操作:
@echo off
if not "%*"=="" goto errorparams
for %%i in (*.png) do convert %%i -gravity Center -crop 50%%x+0+0 cc50_%%i
goto end
:errorparams
echo script must be launched directly
:end
pause