Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理文件中的左字符串有问题_Windows_String_Batch File - Fatal编程技术网

Windows 批处理文件中的左字符串有问题

Windows 批处理文件中的左字符串有问题,windows,string,batch-file,Windows,String,Batch File,我可能遗漏了一些愚蠢的东西,但我对脚本编写非常陌生。我正在尝试创建一个小的批处理文件,让我将一个图像文件放到其中,imagemagick将裁剪输出文件,然后适当地重命名输出文件(基于原始文件名的前6个字符和后缀): 在我尝试使用第三行中的Left String函数之前,它工作得很好。然后它根本不会生成任何新文件。也没有错误消息。不确定问题是什么,任何建议都将不胜感激。如果不确切知道插入的名称是什么,就有点难说了。我很想试试 @echo off Set "CardName=%~1" Set Car

我可能遗漏了一些愚蠢的东西,但我对脚本编写非常陌生。我正在尝试创建一个小的批处理文件,让我将一个图像文件放到其中,imagemagick将裁剪输出文件,然后适当地重命名输出文件(基于原始文件名的前6个字符和后缀):


在我尝试使用第三行中的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%