标题: [文件操作] [已解决]批处理如何实现图片前6位如果跟文件名相同,就复制到文件夹中 [打印本页]
作者: swanseabrian 时间: 2021-10-25 10:37 标题: [已解决]批处理如何实现图片前6位如果跟文件名相同,就复制到文件夹中
本帖最后由 swanseabrian 于 2021-10-27 08:36 编辑
例如 文件夹名 是 123456
图片名字是 123456790.jpg.则移动进去
图片名字是 23344334.jpgm则不移动,这个要怎么写- @echo off
- cd /d "%~dp0"
- for /f "delims=" %%j in ('dir /b /a-d *.jpg') do (
- if not exist %%j:~0,6%
- md %%j:~0,6%
复制代码
写到这里不会了,这个怎么弄一下,谢谢
作者: Fit 时间: 2021-10-25 10:59
@echo off&setlocal enabledelayedexpansion
set name=
for /f "tokens=*" %%i in ('dir /b /a-d *.jpg') do (
set str=%%i
set str=!str:~0,6!
if not exist !str! md !str!
move "%%i" "!str!"
)
pause
作者: swanseabrian 时间: 2021-10-25 11:07
回复 2# Fit
这样对吗?怎么判断前6位的?
作者: swanseabrian 时间: 2021-10-25 11:10
回复 2# Fit
我自己写的是对的,是吗,我就是没理解意思.我去..
作者: Fit 时间: 2021-10-25 11:11
试一试啊
----------------------------------
作者: Fit 时间: 2021-10-25 11:12
我给移动过去了,没有复制
作者: Fit 时间: 2021-10-25 11:13
move "%%i" "!str!" 修改为
copy "%%i" "!str!"
作者: swanseabrian 时间: 2021-10-25 13:15
回复 7# Fit
好的
作者: Batcher 时间: 2021-10-25 22:24
回复 4# swanseabrian
你自己写的不对,不能直接使用for循环的控制变量%%j进行变量截取,需要先赋值给一个普通变量才行。
作者: swanseabrian 时间: 2021-10-26 08:55
回复 9# Batcher
好的
作者: aloha20200628 时间: 2021-10-26 18:30
楼主为何不一步到位呢
例如你要查找的目录是 "d:\img", 你要归类的目录是 "d:\123456"
move "d:\img\123456*.jpg" "d:\123456"
或
copy "d:\img\123456*.jpg" "d:\123456"
作者: swanseabrian 时间: 2021-10-26 19:28
回复 11# aloha20200628
有一万个名字怎么办?
作者: aloha20200628 时间: 2021-10-26 21:11
假设在一个含有jpg图片的目录下,凡是文件名前6个字符相同的jpg文件均移动到同一个目录(该目录名取自这前6个字符),代码如下:
@echo off
set "jpgPath="
set/p jpgPath="从资源管理器拖入一个JPG图片目录:"
if not defined jpgPath exit
cd /d %jpgPath% 2>nul
setlocal enabledelayedexpansion
for /f "delims=" %%F in ('dir /b/a-d *.jpg') do (
set "nameF=%%~nF"
if exist "%%~F" (
set nD="!nameF:~,6!"
md !nD! 2>nul
move "!nameF:~,6!*.jpg" !nD! >nul
)
)
endlocal&exit
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |