标题: [文件操作] [已解决]批处理根据指定条件移动指定文件到对应文件夹中? [打印本页]
作者: czvde 时间: 2021-8-21 12:34 标题: [已解决]批处理根据指定条件移动指定文件到对应文件夹中?
123文件夹:
图片-2001_001_处理.txt
图片-2001_001_123.jpg
图片-1603_103_123.jpg
效果:
123文件夹:
图片-1603_103_123.jpg
移到“123”文件夹中“图片”子文件夹中内容:
图片-2001_001_处理.txt
图片-2001_001_123.jpg
问题已解决,谢谢!!
作者: newswan 时间: 2021-8-21 12:59
图片-* 移动
图片-201603_103_123.jpg 不移动?
作者: czvde 时间: 2021-8-21 13:08
本帖最后由 czvde 于 2021-8-21 16:52 编辑
图片-* 移动
图片-201603_103_123.jpg 不移动?
newswan 发表于 2021-8-21 12:59
已解决
作者: newswan 时间: 2021-8-21 15:34
本帖最后由 newswan 于 2021-8-21 15:51 编辑
用两个for好一些- for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on 123\*.*') do (
- set/a _T_%%b_%%c_+=1
- )
- set _
- for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on 123\*.*') do (
- if !_T_%%b_%%c_! gtr 1 (
- if not exist 123\%%a mkdir 123\%%a
- echo move 123\*-%%b_%%c_* 123\%%a\
- )
- )
复制代码
作者: czvde 时间: 2021-8-21 16:04
本帖最后由 czvde 于 2021-8-21 16:50 编辑
回复 4# newswan
问题已解决
作者: qixiaobin0715 时间: 2021-8-21 16:05
回复 1# czvde
未测试- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=_" %%i in ('dir /b /a-d') do (
- if defined %%i%%j (
- if !m!==0 (
- set /a n+=1
- set str!n!=%%i_%%j
- )
- set m=1
- ) else (
- set m=0
- set %%i%%j=true
- )
- )
- for /l %%a in (1,1,!n!) do (
- if not exist !str%%a:~,2! md !str%%a:~,2!
- move "!str%%a!*.*" "!str%%a:~,2!"
- )
- dir /b /a-d>未移动文件的文件名说明.txt
- pause
复制代码
作者: newswan 时间: 2021-8-21 16:10
回复 5# czvde
批处理放在123下面
作者: newswan 时间: 2021-8-21 16:11
本帖最后由 newswan 于 2021-8-21 16:39 编辑
或者- set _sour_=x:\123
- for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on %_sour_%\*.*') do (
- set/a _T_%%b_%%c_+=1
- )
- set _
- for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on %_sour_%\*.*') do (
- if !_T_%%b_%%c_! gtr 1 (
- if not exist %_sour_%\%%a mkdir %_sour_%\%%a
- echo move %_sour_%\*-%%b_%%c_* %_sour_%\%%a\
- )
- )
复制代码
如果显示正确,把 echo move 的 echo 删除
作者: czvde 时间: 2021-8-21 16:16
本帖最后由 czvde 于 2021-8-21 16:49 编辑
回复 8# newswan
已解决
作者: newswan 时间: 2021-8-21 16:41
回复 9# czvde
上次 123 没改完,重新改了下,
如果正确,把 echo move 改成 move
文件前面加上- @echo off
- setlocal ENABLEDELAYEDEXPANSION
复制代码
作者: newswan 时间: 2021-8-21 16:46
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
-
- set _sour_=123
- pushd %_sour_%
- for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on *.*') do (
- set/a _T_%%b_%%c_+=1
- )
- set _
- for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on *.*') do (
- if !_T_%%b_%%c_! gtr 1 (
- if not exist %%a mkdir %%a
- echo move *-%%b_%%c_* %%a\
- )
- )
- popd
复制代码
如果正确,把 echo move 改成 move
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |