Board logo

标题: [文件操作] 批处理怎把文件夹内文件移到上一层? [打印本页]

作者: suixuewy8    时间: 2010-10-13 11:01     标题: 批处理怎把文件夹内文件移到上一层?

将大量文件夹内文件移到上一层,如何实现?
所有文件夹内格式都是
d:a\b\c.jpg
a,b,c为任意长度的字符
我现在需要将b这级文件夹去除
也就是要变成a\c.jpg
在网上找到一个批处理可是不能用 麻烦帮忙看看如何修改
  1. @echo off
  2. for /f "delims=" %%i in ('dir/b/s/a-d') do (
  3.    for /f "tokens=3 delims=\" %%a in ("%%i") do move "%%i" "%%a"
  4. )
  5. for /f "tokens=*" %%a in ('dir/ad/b/s^|sort /r') do rd/q "%%a"
  6. pause
复制代码
我试了下只能用a,b,c,这三个字母命名的文件夹才可以用这个批处理,换成别的名字的文件夹就不行了

十分感谢各位帮忙!谢谢!
版主的在我这不能用!不知道是为什么
可能是我说的不太清楚!
4楼同学实现的功能是对的 但还差点。不是我想要的结果!

未标题-1.jpg (36.45 KB)
2010-10-14 16:16


我想要用BAT文件实现绿色的文件层级上移一层。其实顶楼我发的那个BAT就可以实现,但对文件夹名有要求必须是“A”。主要想解决这个问题。
作者: edmond    时间: 2010-10-13 12:43

  1. @echo off
  2. cd /d d:\a\b\
  3. move "*.jpg" d:\a\
  4. cd /d d:\a\
  5. rd b
  6. pause
复制代码

作者: 随风    时间: 2010-10-13 16:15

  1. @echo off
  2. for %%a in ("a\b\*.jpg") do (
  3.    move "%%a" "a\"
  4.    rd "a\b"
  5. )
  6. pause
复制代码

作者: hfg1977    时间: 2010-10-13 16:19

  1. for /f "tokens=* delims=" %%i in ('dir/b/s/a/og') do (move "%%i" "%%~dpi.\..\")
复制代码
会将该bat所在的所有文件,目录移动到上一级文件夹,包括bat自身.
作者: leap    时间: 2010-10-14 11:20

  1. xcopy /y "d:\a\b\*.*" "d:\a\"
  2. rd /s /q "d:\a\b\"
  3. exit
复制代码
  1. for /f "delims=" %%i in ('dir/s/b d:\a\b\') do (move "%%i"
  2. "d:\a\")
  3. rd "d:\a\b"
复制代码

[ 本帖最后由 leap 于 2010-10-14 11:28 编辑 ]
作者: suixuewy8    时间: 2010-10-14 15:46

十分感谢各位帮忙!谢谢!
版主的在我这不能用!不知道是为什么
可能是我说的不太清楚!
4楼同学实现的功能是对的 但还差点。不是我想要的结果!

我想要用BAT文件实现绿色的文件层级上移一层。其实顶楼我发的那个BAT就可以实现,但对文件夹名有要求必须是“A”。主要想解决这个问题。
作者: suixuewy8    时间: 2010-10-14 16:00

谢谢各位帮忙!万分感谢!
作者: Batcher    时间: 2010-10-14 20:56     标题: 回复 6楼 的帖子

能否把所有的要求都更新到顶楼?
作者: powerbat    时间: 2010-10-14 23:13     标题: 回复 6楼 的帖子

把你代码中的for /f "tokens=3 delims=\" %%a in ("%%i") do move "%%i" "%%a"
改成 for /f "tokens=1,2 delims=\" %%a in ("%%i") do move "%%i" "%%a\%%b"

4楼的代码也可,要加上删掉不要的文件夹。
作者: 随风    时间: 2010-10-14 23:55

楼主的要求应该是把bat所在的第二级文件夹下的文件上移一层。而不是把bat所在文件夹下的所有文件都上移一层吧?
作者: 随风    时间: 2010-10-15 00:17

  1. @echo off
  2. set "lj=%cd%"
  3. for /d %%i in (*) do (
  4.    cd/d %%i
  5.    set "wkejj="
  6.    for /d %%j in (*) do (
  7.       for %%k in ("%%j\*") do move "%lj%\%%i\%%k" "%lj%\%%i\%%~nxk"
  8.       set "kwjj=%lj%\%%i\%%j"
  9.     )
  10.    setlocal enabledelayedexpansion
  11.    if defined kwjj rd "!kwjj!"
  12.    endlocal
  13.    cd..
  14. )
  15. pause
复制代码

作者: netbenton    时间: 2010-10-15 06:51

  1. @echo off
  2. ::把批处理文件 所在 目录下的 孙目录 移到 子目录
  3. for /d %%a in (*) do (
  4.   pushd "%%a"
  5.   rem 进入子目录,并把当前目录压栈
  6.   for /d %%b in (*) do (move /y "%%b\*.*"&rd "%%b")
  7.   rem 移动指定目录下的所有文件到当前目录
  8.   popd
  9.   rem 返回刚才压栈的目录
  10. )
复制代码

[ 本帖最后由 netbenton 于 2010-10-15 06:52 编辑 ]
作者: suixuewy8    时间: 2010-10-15 08:32     标题: 回复 8楼 的帖子

已经修改了 6楼的删除不了 请帮忙 谢谢
作者: suixuewy8    时间: 2010-10-15 08:37     标题: 回复 11楼 的帖子

测试了下在我机器上这个东西没反反映 只提示我 按任意键继续
作者: vincent0202    时间: 2011-1-5 23:36

如何实现
bat所在的第二级文件夹下的文件和文件夹上移一层

上面给出的代码都只是移动文件的

我要把文件和文件夹都移上一层




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2