精品技术论坛

精品技术论坛 (https://bbs.et8.net/bbs/index.php)
-   『软件使用』 (https://bbs.et8.net/bbs/forumdisplay.php?f=17)
-   -   【求助】求一个批处理 (https://bbs.et8.net/bbs/showthread.php?t=1374728)

wxh5 2019-09-20 22:01:33

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

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

:blush;

smallrice 2019-09-20 22:11:51

没其他条件限制可以用move命令

wxh5 2019-09-20 22:14:27

A目录可以确定,B目录也是固定的,但具体要把A目录下的文件,移动到B目录下的这个文件名为目录名的目录里,在判断一下……

xclimbing 2019-09-20 22:45:59

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

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

如果我的理解不对,那么就可以确定你的语文是体育老师教的。另外,还有一个问题,这个批处理是需要将A目录下所有文件进行所描述的操作吗?

wxh5 2019-09-20 22:52:43

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

现在百度了一会儿,已经实现同目录下把本目录下的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文件移动至本目录下的同名目录:blush;

xclimbing 2019-09-20 23:06:41

那看来最终的结果是这样的: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 2019-09-20 23:24:00

回楼上,目录是创建了,但文件并没有从A目录移动至B目录的小目录内

smallrice 2019-09-21 09:43:19

引用:

作者: wxh5 (文章 17430727)
回楼上,目录是创建了,但文件并没有从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 2019-09-21 09:44:00

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

@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 2019-09-21 09:44:49

谢了楼上,我刚回复好,就看到你回复了!!!

xclimbing 2019-09-21 10:45:16

引用:

作者: wxh5 (文章 17430727)
回楼上,目录是创建了,但文件并没有从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 2019-09-21 11:13:24

高手,膜拜一下,下次如果有类似的批处理也请楼上帮忙!:D

xclimbing 2019-09-21 11:18:09

pushd %Apath% 可以改成:pushd "%Apath%",防备路径中有空格。

wxh5 2019-09-21 12:48:29

引用:

作者: xclimbing (文章 17430854)
我6楼的程序只有一个小bug,就是move /y后面少了一个空格。刚才在本地测试了一下,运行十分完美啊,比你后面发的那个批处理显得高大上多了。[code]@echo off:: 下面两个路径为绝对路径 set Apath=D:\Downloadsset Bpath=D:\Downloads\DwnlDataset EE...

试了楼上的也能用了!非常感谢!!!

wxh5 2020-03-27 17:10:07

再次请教

代码:

@echo off

:: 下面两个路径为绝对路径
set Apath=11111111111111111
set Bpath=22222222222222222
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


这是上次的能用的代码,现在想实现一个功能,想忽略目录前6位,然后依照6位以后的全部名称,和PDF的名称对比,一致的话,就移动PDF至这个目录,能保证肯定是一个目录对应一个PDF的


所有时间均为北京时间, 现在的时间是 19:36:43.

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

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