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

[文件操作] 批处理怎把文件夹内文件移到上一层?

将大量文件夹内文件移到上一层,如何实现?
所有文件夹内格式都是
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”。主要想解决这个问题。

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

TOP

  1. @echo off
  2. for %%a in ("a\b\*.jpg") do (
  3.    move "%%a" "a\"
  4.    rd "a\b"
  5. )
  6. pause
复制代码
技术问题请到论坛发帖求助!

TOP

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

TOP

  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 编辑 ]

TOP

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

我想要用BAT文件实现绿色的文件层级上移一层。其实顶楼我发的那个BAT就可以实现,但对文件夹名有要求必须是“A”。主要想解决这个问题。

TOP

谢谢各位帮忙!万分感谢!

TOP

回复 6楼 的帖子

能否把所有的要求都更新到顶楼?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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楼的代码也可,要加上删掉不要的文件夹。

TOP

楼主的要求应该是把bat所在的第二级文件夹下的文件上移一层。而不是把bat所在文件夹下的所有文件都上移一层吧?
技术问题请到论坛发帖求助!

TOP

  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
复制代码
技术问题请到论坛发帖求助!

TOP

  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 编辑 ]

TOP

回复 8楼 的帖子

已经修改了 6楼的删除不了 请帮忙 谢谢

TOP

回复 11楼 的帖子

测试了下在我机器上这个东西没反反映 只提示我 按任意键继续

TOP

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

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

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

TOP

返回列表