标题: [文件操作] 求指导解决批处理将多个文件按指定数量/数目移动到不同文件夹里出现的一些问题 [打印本页]
作者: AILOVEU 时间: 2016-11-13 02:05 标题: 求指导解决批处理将多个文件按指定数量/数目移动到不同文件夹里出现的一些问题
本帖最后由 pcl_test 于 2016-11-13 16:02 编辑
- @echo off
- setlocal enabledelayedexpansion
- set count=0
- set hundred=100
- set file=1
- for %%i in (*.gif) do (
- set /a count+=1
- if not exist !file! (
- md !file!
- move "%%i" !file!
- ) else (
- move "%%i" !file!
- )
- if !count! equ !hundred! (
- set /a count=0
- set /a file+=1
- )
- )
复制代码
这是我写的一段代码,主要解决文件的移动(每100个gif图移动到一个数字编号的文件夹)。现学现写的,所以有些问题:
1.setlocal enabledelayedexpansion我查相关资料时,有要endlocal,这里要不要写;这个延迟是针对整个for的存在周期吗
2.有三个文件没有移动:
青年图摘0204! - Pow_20160204_13099065706496000_000.gif
青年图摘0204! - Pow_20160204_13099065713274000_000.gif
是我想太多! 你总这样说~ -_20160212_13099761875492600_000.gif
不知道什么原因?
3.还有就是各位大神对这个小程序有没有建议什么的,第一次编写很想听听大家的看法
作者: AILOVEU 时间: 2016-11-13 12:19
自顶一贴
作者: pcl_test 时间: 2016-11-13 17:51
本帖最后由 pcl_test 于 2016-11-13 17:53 编辑
1、在for外,从setlocal enabledelayedexpansion出现的位置到批处理执行完毕或endlocal之间的过程有效;在for内,从setlocal enabledelayedexpansion出现的位置到for完毕或endlocal或goto :eof的整个过程有效
2、开启延迟后,!感叹号变成延迟的标记,变量表示为!var!,故会过滤掉- @echo off
- set quantity=100
- for /l %%a in (1 1 1000) do (
- call :loop "%%a"
- if not exist *.gif goto end
- )
- :end
- pause&exit
- :loop
- for %%b in (*.gif) do (
- 2>nul md "%~1"
- move "%%b" "%~1"
- set /a count+=1,"1/(count-%quantity%)">nul 2>&1||(set count=0&goto :eof)
- )
复制代码
作者: pcl_test 时间: 2016-11-13 18:16
- @echo off
- rem win7及以上系统运行
- set quantity=10
- powershell -c "$fd=1;dir *.gif|%%{$n+=1;ni $fd -force -type directory;mv $_ $fd;if($n -eq %quantity%){$n=0;$fd+=1}}"
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |