[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何根据文件名批量移动?

文件是在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
编了一个,但不行
  1.     @echo off
  2.     echo 全盘扫描E盘下的grd文件,请耐心等待...
  3.     cd.>list.txt
  4.     for /f "delims=" %%i in ('dir /a-d /b /s E:\Experimental data\test\*.grd') do (echo %%i)>>list.txt
  5.     echo.>>list.txt
  6.     for /f "delims=" %%i in (list.txt) do (
  7.         for /f "tokens=1 delims==l" %%j in ("%%i") do (
  8.             for /f "delims=" %%k in ('findstr /iec:"%%j.grd" list.txt 2^>nul') do (
  9.                 move E:\Experimental data\test\%%i.grd "%%~dpk"
  10.             )
  11.         )
  12.     )
  13.     pause
复制代码

哪里报错了?

TOP

回复 2# awk


首先,list.txt是空的
其次,出现
  1. 全盘扫描E盘下的txt文件,请耐心等待...
  2. 系统找不到指定的路径。
  3. 请按任意键继续. . .
复制代码

TOP

回复 1# ytyyutianyun
  1.     @echo off
  2.     echo 全盘扫描E盘下的grd文件,请耐心等待...
  3.     cd.>list.txt
  4.     for /f "delims=" %%i in ('dir  /a-d /b  *.grd') do
  5. (echo %%i)>>list.txt
  6.     echo.>>list.txt
  7.     for /f "delims=" %%i in (list.txt) do (
  8.         for /f "tokens=1 delims==l" %%j in ("%%i") do (
  9. md %%j
  10. move %%i %%j
  11.         )
  12.     )
  13.     pause
复制代码
重新试了一下,不太满意。主要是md %%j 会出现“子目录或文件 twoperpendicu 已经存在”。

TOP

回复 4# ytyyutianyun


可以在md之前加个判断
  1. @echo off
  2. echo 全盘扫描E盘下的grd文件,请耐心等待...
  3. cd.>list.txt
  4. for /f "delims=" %%i in ('dir  /a-d /b  *.grd') do (echo %%i)>>list.txt
  5. echo.>>list.txt
  6. for /f "delims=" %%i in (list.txt) do (
  7.     for /f "tokens=1 delims==l" %%j in ("%%i") do (
  8.         if not exist "%%j\" (
  9.             md %%j
  10.         )
  11.         move %%i %%j
  12.     )
  13. )
  14. pause
复制代码

TOP

回复 5# awk
谢谢

TOP

回复 1# ytyyutianyun

学习了http://bathome.l3.wuyou.com/thread-14682-1-1.html后对1d,3d,6d进行分类。其中
  1. 1d
  2. 3d
  3. 6d
复制代码
保存到sort.txt中
  1.     @echo off
  2.     echo 全盘扫描E盘下的grd文件,请耐心等待...
  3.     cd.>list.txt
  4.     for /f "delims=" %%i in ('dir  /a-d /b  *.grd') do
  5. (echo %%i)>>list.txt
  6.     echo.>>list.txt
  7.         for /f "delims=" %%j in (sort.txt) do (
  8. md %%j
  9.             for /f "delims=" %%k in ('findstr /c:"%%j"
  10. list.txt') do (
  11.             move %%k %%j
  12.         )
  13.     )
  14.     pause
复制代码

TOP

返回列表