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

[文件操作] 【萌新求助】遍历文件夹,移动文件

谢谢各位大佬!=3=

【文件夹树
A》图1》一堆jpg
B》图1》一堆jpg
……
Z》图1》一堆jpg
(jpg的名称为:1~200)

【需求:
1、在A~Z每个字母的文件夹中,建立“原图2”文件夹
2、将“原图1”文件夹中的 编号100往后的jpg图片,全部移动到原图2中

本帖最后由 yhcfsr 于 2018-2-8 16:28 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set "SourDir=F:\Test"
  3. cd /d "%SourDir%"
  4. for /d %%a in (*) do (
  5. pushd %%a
  6. for /f "delims=" %%b in ('dir /a-d/b/s') do (
  7. set/a name=%%~nb&set "FileDir=%%~dpb"&&set "FileDir=!FileDir:~0,-1!"
  8. if !name! geq 100 robocopy /mov "!FileDir!" "原图2" "%%~nxb">NUL
  9. )
  10. popd
  11. )
  12. pause&exit
复制代码

TOP

回复 2# yhcfsr


    谢谢您,帮了很大的忙!QAQ(虽然很多语法都没看懂。。。)
十分抱歉,我这边的文件夹树描述错了,还得再麻烦您一下下。。。
【文件夹树
1》A》图1》一堆jpg
1》B》图1》一堆jpg
2》A》图1》一堆jpg
2》B》图1》一堆jpg
(jpg的名称为:1~200)
如上,数字文件夹有很多,每个数字里放着ABCD等

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set "SourDir=F:\Test"
  3. for /f "delims=" %%a in ('dir /a-d/b/s "%SourDir%"') do (
  4. set/a FileName=%%~na
  5. if !FileName! geq 100 (
  6. set "FilePath=%%~dpa"&&set "FilePath=!FilePath:~0,-1!"
  7. for /f "delims=" %%b in ("!FilePath!") do (
  8. set "DestPath=%%~dpb"&&set "DestPath=!DestPath:~0,-1!\原图2"
  9. robocopy /mov "!FilePath!" "!DestPath!" "%%~nxa"
  10. )
  11. )
  12. )
复制代码
回复 3# 40252492

TOP

本帖最后由 40252492 于 2018-2-9 09:19 编辑

回复 4# yhcfsr


    大佬。。。成功了诶T.T
实际拿到的文件是这个样子的,他最外面的编号不是12345,而是01 02 03 04 05!
【文件夹树
01》A》图1》一堆jpg
01》B》图1》一堆jpg
02》A》图1》一堆jpg
02》B》图1》一堆jpg
我尝试搜索原图,然后cd ..但是失败了,真的麻烦您了! 谢谢~

TOP

回复 5# 40252492


   不管是12345,还是0102030405,还是别的什么名字都不影响。应该可以正确执行。

TOP

回复 6# yhcfsr


    是的,程序没有问题,十分感谢您

早上用的时候提示“找不到该路径”,查了好久没正确的解释
同事说是文件夹树埋得太深了,结果拉出来放到D盘根目录下就直接出来了
请问为何会这样呢?明明cmd里echo %cd%是可以获取到的,可能是作为参数有字节限制之类的吧。。。

然后,我稍微修改了一下下,如下
  1. for /f "delims=" %%a in ('dir /a-d/b/s "%cd%"') do (
  2. set/a FileName=%%~na
  3. if !FileName! geq 2100 (
  4. set "FilePath=%%~dpa"&&set "FilePath=!FilePath:~0,-1!"
  5. for /f "delims=" %%b in ("!FilePath!") do (
  6. cd /d %%b
  7. cd ..
  8. robocopy /mov "!FilePath!" "原图2" "%%~nxa"
  9. )
  10. )
  11. )
复制代码
如上,主要修改的是剪切的目标路径
因为找到“原图”里编号的图片文件之后,已经在每个字母的文件夹里面了
直接cd ..就回到了上级目录,省去了一次set后面我看不懂的那些,测试可用

TOP

返回列表