. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 回复
 
主题工具
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,406 声望值: 1
精华: 0,解答: 29
#1 旧 2019-09-20, 22:01:33 默认 【求助】求一个批处理
wxh5 当前在线  

工作上用的,要求比较简单,但批处理只会用COPY之类的,所以不会

从A目录移动文件至B目录下的同名目录,A目录的所有文件肯定在B目录下有同名的目录存在,只需要移过去就行



感谢ccf
回复时引用此帖
smallrice
 
smallrice 的头像
热心会员
 
资 料:
注册日期: Aug 2000
帖子: 463 声望值: 6
精华: 0,解答: 5
#2 旧 2019-09-20, 22:11:51 默认
smallrice 当前离线  

没其他条件限制可以用move命令
回复时引用此帖
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,406 声望值: 1
精华: 0,解答: 29
#3 旧 2019-09-20, 22:14:27 默认
wxh5 当前在线  

A目录可以确定,B目录也是固定的,但具体要把A目录下的文件,移动到B目录下的这个文件名为目录名的目录里,在判断一下……
回复时引用此帖
xclimbing
 
xclimbing 的头像
普通会员
 
资 料:
注册日期: Jan 2019
帖子: 105 声望值: 0
精华: 0,解答: 1
#4 旧 2019-09-20, 22:45:59 默认
xclimbing 当前离线  

楼主,你的语文是体育老师教的?当你描述不明白一件事时,请举个例子。

我是这样理解的:假设A目录下有一个文件叫some.file.ext,那么B目录下有一个目录名也叫:some.file.ext,你要的最终结果是这样的:move A\some.file.ext B\some.file.ext\some.file.ext

如果我的理解不对,那么就可以确定你的语文是体育老师教的。另外,还有一个问题,这个批处理是需要将A目录下所有文件进行所描述的操作吗?
回复时引用此帖
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,406 声望值: 1
精华: 0,解答: 29
#5 旧 2019-09-20, 22:52:43 默认
wxh5 当前在线  

好吧,我以为说的挺清楚了

现在百度了一会儿,已经实现同目录下把本目录下的PDF移动至本目录下的同名目录内了:

@echo off

set EE=.pdf

for /f "tokens=1,* delims=." %%i in ('dir /a-d/b *%EE%') do (

echo "%%~nxi"

if not exist "%%~nxi" (md "%%~nxi")

move "%%i.%%j" "%%~nxi\" )


但是不会设置把别的目录的PDF文件移动至本目录下的同名目录
回复时引用此帖
xclimbing
 
xclimbing 的头像
普通会员
 
资 料:
注册日期: Jan 2019
帖子: 105 声望值: 0
精华: 0,解答: 1
#6 旧 2019-09-20, 23:06:41 默认
xclimbing 当前离线  

那看来最终的结果是这样的:move A\some.file.ext B\some.file\some.file.ext

试一下这个,我没时间试,可能会有小bug:


@echo off
:: 下面两个路径为绝对路径
set Apath=x:\A
set Bpath=y:\B
set EE=.pdf

pushd %Apath%
for /f "tokens=* delims=" %%i in ('dir /a-d/b *%EE%') do (
echo "%%i"
if not exist "%Bpath%\%%~ni" (md "%Bpath%\%%~ni")
move /y"%%i" "%Bpath%\%%~ni\" )
popd
回复时引用此帖
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,406 声望值: 1
精华: 0,解答: 29
#7 旧 2019-09-20, 23:24:00 默认
wxh5 当前在线  

回楼上,目录是创建了,但文件并没有从A目录移动至B目录的小目录内
回复时引用此帖
smallrice
 
smallrice 的头像
热心会员
 
资 料:
注册日期: Aug 2000
帖子: 463 声望值: 6
精华: 0,解答: 5
#8 旧 2019-09-21, 09:43:19 默认
smallrice 当前离线  

引用:
作者: wxh5 查看帖子
回楼上,目录是创建了,但文件并没有从A目录移动至B目录的小目录内
改一下,我这测试文件可以移动了

代码:
@echo off
:: 下面两个路径为绝对路径 
set Apath=x:\A
set Bpath=y:\B
set EE=.pdf

pushd %Apath%
for /f "tokens=* delims=" %%i in ('dir /a-d/b *%EE%') do (
echo "%%i"
if not exist "%Bpath%\%%~ni" (md "%Bpath%\%%~ni")
move /y "%Apath%\%%i" "%Bpath%\%%~ni\" )
popd
回复时引用此帖
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,406 声望值: 1
精华: 0,解答: 29
#9 旧 2019-09-21, 09:44:00 默认
wxh5 当前在线  

昨天在朋友帮助下成功了:

@echo off
C:
cd "A目录"

set EE=.pdf
for /f "tokens=1,* delims=." %%i in ('dir /a-d/b *%EE%') do (
echo "%%~nxi"
if not exist "B目录%%~nxi" (md "B目录%%~nxi")
move "%%i.pdf" "B目录%%~nxi\"
)

前面改动不成功是因为是跨盘符+目录中有空格+目录中有中文,所以一直出错
回复时引用此帖
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,406 声望值: 1
精华: 0,解答: 29
#10 旧 2019-09-21, 09:44:49 默认
wxh5 当前在线  

谢了楼上,我刚回复好,就看到你回复了!!!
回复时引用此帖
xclimbing
 
xclimbing 的头像
普通会员
 
资 料:
注册日期: Jan 2019
帖子: 105 声望值: 0
精华: 0,解答: 1
#11 旧 2019-09-21, 10:45:16 默认
xclimbing 当前离线  

引用:
作者: wxh5 查看帖子
回楼上,目录是创建了,但文件并没有从A目录移动至B目录的小目录内
我6楼的程序只有一个小bug,就是move /y后面少了一个空格。

刚才在本地测试了一下,运行十分完美啊,比你后面发的那个批处理显得高大上多了。

代码:
@echo off
:: 下面两个路径为绝对路径 
set Apath=D:\Downloads
set Bpath=D:\Downloads\DwnlData
set EE=.zip

pushd %Apath%
for /f "tokens=* delims=" %%i in ('dir /a-d/b *%EE%') do (
echo "%%i"
if not exist "%Bpath%\%%~ni" (md "%Bpath%\%%~ni")
move /y "%%i" "%Bpath%\%%~ni\" )
popd
回复时引用此帖
sunboy
 
sunboy 的头像
热心会员
 
资 料:
注册日期: Jun 2001
帖子: 2,535 声望值: 4
精华: 2,解答: 18
#12 旧 2019-09-21, 11:13:24 默认
sunboy 当前在线  

高手,膜拜一下,下次如果有类似的批处理也请楼上帮忙!
回复时引用此帖
xclimbing
 
xclimbing 的头像
普通会员
 
资 料:
注册日期: Jan 2019
帖子: 105 声望值: 0
精华: 0,解答: 1
#13 旧 2019-09-21, 11:18:09 默认
xclimbing 当前离线  

pushd %Apath% 可以改成:pushd "%Apath%",防备路径中有空格。
回复时引用此帖
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,406 声望值: 1
精华: 0,解答: 29
#14 旧 2019-09-21, 12:48:29 默认
wxh5 当前在线  

引用:
作者: xclimbing 查看帖子
我6楼的程序只有一个小bug,就是move /y后面少了一个空格。刚才在本地测试了一下,运行十分完美啊,比你后面发的那个批处理显得高大上多了。[code]@echo off:: 下面两个路径为绝对路径 set Apath=D:\Downloadsset Bpath=D:\Downloads\DwnlDataset EE...
试了楼上的也能用了!非常感谢!!!
回复时引用此帖
发表新主题 回复

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 14:00:48.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号