标题: [文件操作] 批处理如何根据文件名批量移动? [打印本页]
作者: ytyyutianyun 时间: 2011-11-22 12:36 标题: 批处理如何根据文件名批量移动?
文件是在E:\Experimental data\test
文件为:
名称
twoperpendicularshear1d89jdAnH12.grd
twoperpendicularmiddle6d140jdAnH23.grd
onevertical145jdAnH23.grd
onevertical148jdAnH13.grd
twoperpendicularmiddle6d111jdAnH13.grd
twoperpendicularshear6d234jdAnH12.grd
onevertical148jdAnH12.grd
目的是把onevertical145jdAnH23.grd,onevertical148jdAnH13.grd,onevertical148jdAnH12.grd放入E:\Experimental data\test\one\vertical
把twoperpendicularshear1d89jdAnH12.grd,twoperpendicularmiddle6d140jdAnH23.grd,twoperpendicularmiddle6d111jdAnH13.grd,twoperpendicularshear6d234jdAnH12.grd
放入E:\Experimental data\test\two\perpendicular\middle\6d
其中E:\Experimental data\test\one\vertical和E:\Experimental data\test\two\perpendicular\middle\6d目录不存在
注:我有办法可以把twoperpendicularmiddle6d140jdAnH23.grd变成two_perpendicular_middle_6d_140_jdAnH23.grd这样有可能好分吧
谢谢
我看过了http://bathome.l3.wuyou.com/viewthread.php?tid=2628
编了一个,但不行- @echo off
- echo 全盘扫描E盘下的grd文件,请耐心等待...
- cd.>list.txt
- for /f "delims=" %%i in ('dir /a-d /b /s E:\Experimental data\test\*.grd') do (echo %%i)>>list.txt
- echo.>>list.txt
- for /f "delims=" %%i in (list.txt) do (
- for /f "tokens=1 delims==l" %%j in ("%%i") do (
- for /f "delims=" %%k in ('findstr /iec:"%%j.grd" list.txt 2^>nul') do (
- move E:\Experimental data\test\%%i.grd "%%~dpk"
- )
- )
- )
- pause
复制代码
作者: awk 时间: 2011-11-22 22:16
哪里报错了?
作者: ytyyutianyun 时间: 2011-11-23 08:27
回复 2# awk
首先,list.txt是空的
其次,出现- 全盘扫描E盘下的txt文件,请耐心等待...
- 系统找不到指定的路径。
- 请按任意键继续. . .
复制代码
作者: ytyyutianyun 时间: 2011-11-23 11:56
回复 1# ytyyutianyun - @echo off
- echo 全盘扫描E盘下的grd文件,请耐心等待...
- cd.>list.txt
- for /f "delims=" %%i in ('dir /a-d /b *.grd') do
-
- (echo %%i)>>list.txt
- echo.>>list.txt
- for /f "delims=" %%i in (list.txt) do (
- for /f "tokens=1 delims==l" %%j in ("%%i") do (
- md %%j
- move %%i %%j
- )
- )
- pause
复制代码
重新试了一下,不太满意。主要是md %%j 会出现“子目录或文件 twoperpendicu 已经存在”。
作者: awk 时间: 2011-11-23 12:39
回复 4# ytyyutianyun
可以在md之前加个判断- @echo off
- echo 全盘扫描E盘下的grd文件,请耐心等待...
- cd.>list.txt
- for /f "delims=" %%i in ('dir /a-d /b *.grd') do (echo %%i)>>list.txt
- echo.>>list.txt
- for /f "delims=" %%i in (list.txt) do (
- for /f "tokens=1 delims==l" %%j in ("%%i") do (
- if not exist "%%j\" (
- md %%j
- )
- move %%i %%j
- )
- )
- pause
复制代码
作者: ytyyutianyun 时间: 2011-11-23 13:26
回复 5# awk
谢谢
作者: ytyyutianyun 时间: 2011-11-23 14:29
回复 1# ytyyutianyun
学习了http://bathome.l3.wuyou.com/thread-14682-1-1.html后对1d,3d,6d进行分类。其中复制代码
保存到sort.txt中- @echo off
- echo 全盘扫描E盘下的grd文件,请耐心等待...
- cd.>list.txt
- for /f "delims=" %%i in ('dir /a-d /b *.grd') do
-
- (echo %%i)>>list.txt
- echo.>>list.txt
- for /f "delims=" %%j in (sort.txt) do (
- md %%j
- for /f "delims=" %%k in ('findstr /c:"%%j"
-
- list.txt') do (
- move %%k %%j
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |