File 操纵1000+的大容量;图像
大家好 我很高兴能得到一些关于windows批处理脚本文件的帮助,以操作图像, 我正在从旧软件迁移,它用于将文件保存在文件夹中,每个文件都有自己的用户id(例如10050.jpg) 我有1000个这样的图像,我想用图像名称将图像分发到新文件夹,并创建SQL文件以更新新软件,例如:File 操纵1000+的大容量;图像,file,batch-file,bulk,file-manipulation,File,Batch File,Bulk,File Manipulation,大家好 我很高兴能得到一些关于windows批处理脚本文件的帮助,以操作图像, 我正在从旧软件迁移,它用于将文件保存在文件夹中,每个文件都有自己的用户id(例如10050.jpg) 我有1000个这样的图像,我想用图像名称将图像分发到新文件夹,并创建SQL文件以更新新软件,例如: 10050.jpg, 10051.jpg, 10052a.jpg, 10052b.jpg 将转到: /root/10050/10050.jpg /root/10051/10051.jpg /root/10052/10
10050.jpg, 10051.jpg, 10052a.jpg, 10052b.jpg
将转到:
/root/10050/10050.jpg
/root/10051/10051.jpg
/root/10052/10052a.jpg
/root/10052/10052b.jpg
/root/10050/10050.jpg
/root/10051/10051.jpg
/root/10052/10052a.jpg
/root/10052/10052b.jpg
和SQL文件创建:
update users set user_img = 10050/10050.jpg where user_id = 10050;
update users set user_img = 10051/10051.jpg where user_id = 10051;
update users set user_img_a = 10052/10052a.jpg where user_id = 10052;
update users set user_img_b = 10052/10052b.jpg where user_id = 10052;
更新用户设置user\u img=10050/10050.jpg,其中user\u id=10050;
更新用户设置user\u img=10051/10051.jpg,其中user\u id=10051;
更新用户设置user\u img\u a=10052/10052a.jpg,其中user\u id=10052;
更新用户设置user\u img\u b=10052/10052b.jpg,其中user\u id=10052;
有人能帮我写一个批处理文件来提取这些信息吗?
我是这方面的初学者。
谢谢大家! 如果你有选择,这里有一个脚本
我不知道为什么在windows中使用*nix目录语法,但请根据需要相应地更改
root
变量。鉴于文件名中的ID始终由5位数字组成,算法可能如下:
SETLOCAL
SET "oldroot=X:\originalpath"
SET "newroot=Y:\newrootfolder"
SET "sqlscript=Z:\path\to\script.sql"
FOR %%F IN (%oldroot%\*.jpg) DO CALL :process "%%F"
ENDLOCAL
GOTO :EOF
:process
SET filename=%~nx1
SET userid=%filename:~0,5%
IF NOT EXIST "%newroot%\%userid%\" MKDIR "%newroot%\%userid%"
COPY %1 "%newroot%\%userid%"
>>%sqlscript% ECHO update users set user_img = '%userid%\%filename%' where user_id = %userid%
请编辑您的帖子,您的第一个列表有10053b,第二个列表有10052b,最后一个列表有两次id 10050,所以您根本不清楚您想要什么。
id
s是否准确(并且始终)是5个数字?我编辑了这篇文章,很抱歉造成混淆,id始终是5个数字,有时用户会有几张图片,然后是10052a.jpg和10052b.jpg谢谢,脚本看起来很复杂,然后是批处理脚本,我会尝试Ruby,让你知道。什么是nix目录?您还没有看到批处理解决方案,所以如何知道它比批处理复杂这比使用.cmd
脚本所能做的任何事情都要短得多。@kurumi:将其作为问题发布,等待答案。:)我正在提供一个解决方案来回答这个问题的要求,正如OP所说的。非常好!我将SetLocal EnableDelayedExpansion添加到顶部,并将最后一行更改为附加到脚本[ECHO XXX>>%sqlscript%]中,效果非常好!非常感谢。我的意思是附加一行,谢谢你提到它,我修正了我的脚本。至于你的另一个变化,我真的很想知道为什么你会需要在这样的脚本。(我的意思是填补我关于延迟扩张的知识空白,而不是争辩。)
SETLOCAL
SET "oldroot=X:\originalpath"
SET "newroot=Y:\newrootfolder"
SET "sqlscript=Z:\path\to\script.sql"
FOR %%F IN (%oldroot%\*.jpg) DO CALL :process "%%F"
ENDLOCAL
GOTO :EOF
:process
SET filename=%~nx1
SET userid=%filename:~0,5%
IF NOT EXIST "%newroot%\%userid%\" MKDIR "%newroot%\%userid%"
COPY %1 "%newroot%\%userid%"
>>%sqlscript% ECHO update users set user_img = '%userid%\%filename%' where user_id = %userid%