. : : ClassiClub ForuM : : .

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

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



发表新主题 回复
 
主题工具
xclimbing
 
xclimbing 的头像
中级会员
 
资 料:
注册日期: Jan 2019
帖子: 425 声望值: 0
精华: 0,解答: 7
#16 旧 2020-03-27, 19:03:06 默认
xclimbing 当前离线  

引用:
作者: wxh5 查看帖子
再次请教

[CODE]@echo off

:: 下面两个路径为绝对路径
set Apath=11111111111111111
set Bpath=22222222222222222
set EE=.pdf

pushd "%Apath%"
for /f "tokens=* delims=" %%i in ('d...
@wxh5 没看太明白,你能不能举一个实例?我理解是这样:

1、首先绝对路径是指带盘符的路径,例如:d:\11111,类似:\11111就不是绝对路径。
2、假设Apath下有一个123456.pdf文件,你的要求是不是:在Bpath下假设存在一个:xxxxxx123456的文件夹,那么这个pdf文件就移动到这个目录下,你保证这个目录是唯一的。如果不存在这个目录,是否需要创建目录,或者不移动文件。

假设不存在对应目录,就不移动文件,代码如下(本地实验过了,基本上是成功的):


@echo off & setlocal ENABLEDELAYEDEXPANSION
:: 下面两个路径为绝对路径
set Apath=e:\temp
set Bpath=e:\temp\DwnlData
set EE=.zip

pushd %Apath%
for /f "tokens=* delims=" %%i in ('dir /a-d/b *%EE%') do (
echo "%%i"
for /f "tokens=* delims=" %%d in ('dir /ad/b %Bpath%') do (
set dd=%%d
echo [!dd!] [!dd:~6!]
if "%%~ni"=="!dd:~6!" move /y "%%i" "%Bpath%\%%d\" ))

::if not exist "%Bpath%\%%~ni" (md "%Bpath%\%%~ni")
::move /y "%%i" "%Bpath%\%%~ni\" )
popd
回复时引用此帖
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,474 声望值: 1
精华: 0,解答: 29
#17 旧 2020-03-27, 22:46:47 默认
wxh5 当前离线  

回楼上,我试了一下没成功

显示
代码:
D:\2018年工作目录>"03 批处理 - 副本.bat"
"1.pdf"
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
"2.pdf"
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
"3.pdf"
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
"4.pdf"
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
"5.pdf"
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
"6.pdf"
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
当前目录下有7个目录,前6个分别是[0001]1,一直到6,是不是连.pdf一起判断进去了呢?这批处理我一窍不通,自己想改也无从下手,只能伸手求助


感谢ccf
回复时引用此帖
xclimbing
 
xclimbing 的头像
中级会员
 
资 料:
注册日期: Jan 2019
帖子: 425 声望值: 0
精华: 0,解答: 7
#18 旧 2020-03-27, 23:05:45 默认
xclimbing 当前离线  

引用:
作者: wxh5 查看帖子
回楼上,我试了一下没成功

显示
[CODE]D:\2018年工作目录>"03 批处理 - 副本.bat"
"1.pdf"
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~6!]
[!dd!] [!dd:~...
把你改过的批处理拿出来看看,最好连实际情况也详细讲一下。批处理毕竟不是严格的程序,有很多限制,跟实际环境密切相关。在我的实验环境中,是完全成功的。

从你贴出的运行结果看,基本上可以判断,你没有照抄我的批处理,你把我批处理的第一句给漏了。也就是@echo off那一行,在这一行后面加了一句:& setlocal ....,这是至关重要的一个设置。
回复时引用此帖
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,474 声望值: 1
精华: 0,解答: 29
#19 旧 2020-03-27, 23:13:50 默认
wxh5 当前离线  

解决了,因为涉及到路径,我只复制了下半部分,最上面那句没注意到,复制过去就解决了

刚才你不在线的时候,我自己研究了一下,echo了几个东东,想想你的应该是对的,但就是这个:echo [!dd!] [!dd:~6!]显示出来的还是代码,没想到是最上面一句的问题

非常感谢!批处理实在是像天书,完全不懂
回复时引用此帖
xclimbing
 
xclimbing 的头像
中级会员
 
资 料:
注册日期: Jan 2019
帖子: 425 声望值: 0
精华: 0,解答: 7
#20 旧 2020-03-28, 09:09:39 默认
xclimbing 当前离线  

引用:
作者: wxh5 查看帖子
解决了,因为涉及到路径,我只复制了下半部分,最上面那句没注意到,复制过去就解决了

刚才你不在线的时候,我自己研究了一下,echo了几个东东,想想你的应该是对的,但就是这个:echo [!dd!] [!dd:~6!]显示出来的还是代码,没想到是最上面一句的问题

非常感谢!批处理实在是像天书,完全不懂
果然如我推测,问题解决就好。

批处理复杂起来确实要复杂很多,尤其你这个批处理中,用到的批处理高级功能比较多:延迟扩展、嵌套循环、字符串提取、变量扩展等。如果把我这个批处理你完全搞明白了,我觉得你已经搞定了批处理的90%应用。
回复时引用此帖
发表新主题 回复

主题工具

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


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

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

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