Windows 批处理文件中的左字符串有问题
我可能遗漏了一些愚蠢的东西,但我对脚本编写非常陌生。我正在尝试创建一个小的批处理文件,让我将一个图像文件放到其中,imagemagick将裁剪输出文件,然后适当地重命名输出文件(基于原始文件名的前6个字符和后缀):Windows 批处理文件中的左字符串有问题,windows,string,batch-file,Windows,String,Batch File,我可能遗漏了一些愚蠢的东西,但我对脚本编写非常陌生。我正在尝试创建一个小的批处理文件,让我将一个图像文件放到其中,imagemagick将裁剪输出文件,然后适当地重命名输出文件(基于原始文件名的前6个字符和后缀): 在我尝试使用第三行中的Left String函数之前,它工作得很好。然后它根本不会生成任何新文件。也没有错误消息。不确定问题是什么,任何建议都将不胜感激。如果不确切知道插入的名称是什么,就有点难说了。我很想试试 @echo off Set "CardName=%~1" Set Car
在我尝试使用第三行中的Left String函数之前,它工作得很好。然后它根本不会生成任何新文件。也没有错误消息。不确定问题是什么,任何建议都将不胜感激。如果不确切知道插入的名称是什么,就有点难说了。我很想试试
@echo off
Set "CardName=%~1"
Set CardFront=%CardName:~0,6%
convert.exe "%~1" -crop 459x687+11+19 +repage "%CardFront%_card.jpg"
exit
当所提供的名称应用于cardname
时,应删除其周围的任何引号,并在.jpg
的名称中包含cardfront
中出现的任何空格
所以黑桃皇后.ext
将成为女王卡.jpg
考虑到这不起作用,而且没有
imagemagick
@echo关闭
设置“CardName=%~1”
设置CardFront=%CardName:~0,6%
ECHO convert.exe“%~1”-裁剪459x687+11+19+重新分页“%CardFront%\u card.jpg”
convert.exe“%~1”-裁剪459x687+11+19+重新分页“%CardFront%\u card.jpg”
暂停
出口
它应该显示批处理尝试执行的命令和尝试转换的结果。我怀疑这可能是目录问题convert.exe
可能不在当前目录中或批处理运行时的路径上。您可能必须完全限定文件名,才能将批处理定向到适当的位置
嗯-也许加上
cd "c:\wherever\your\imagemagick\directory\is"
在@echo off
之后的新行上。这可能会创造奇迹。或者将快捷方式“开始于”目录设置为imagemagick
的主页-可能也需要将批处理移动到那里
鉴于
Cardfront
的设置有问题;提供的数据是完整路径:
代替
Set CardFront=%CardName:~0,6%
使用
在设置CardFront=..后进行:
echo%CardFront%&暂停
。。。。并检查值是否正确。谢谢!尝试此操作后,我发现它返回的值是文件所在目录路径的前6个字符(而不是文件名的前6个字符)。。有关于如何更正的建议吗?尝试了一下,但不幸的是没有区别(因此仍然没有生成文件)。一个示例文件名是“u11095_c.jpg”-最终我希望新文件名为“u11095_card.jpg”。谢谢,Magoo!根据sachadee上面的评论,它看起来确实像是一个目录问题。不是使用它的imagemagick部分(实际上我可以在不尝试重命名的情况下运行它),而是正确设置CardFront变量。现在,它实际上在提取文件名目录路径的前6个字符(最终是“C:\fan”而不是“u11095”)。不过,我不知道如何纠正这个问题。
Set CardFront=%CardName:~0,6%
for %%a in ("%~1") do Set CardFront=%%~na
Set CardFront=%CardFront:~0,6%