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

[文件操作] 对当前目录下所有目录进行判断后切换到目标目录

对当前目录下所有目录进行判断,判断这些路径中是否存在updat目录,存在就cd进入到update上层目录,如c:\1\2\update,那么就cd到c:\1\2,同时另外还有一种特殊情况就是含有多个update目录如c:\1\2\update\update,这种情况还是以第一个为准,即还是进入到cd到c:\1\2。

如何用l批处理实现这个功能呢?最好通用的,因为目录深度和目录名会更具需要而发生变化,还望各位前辈多多指教,非常感谢。
  1. @echo off
  2. cd /d "C:\Documents and Settings\Administrator\桌面\soft\patch\1"
  3. for %%a in (clnt svr update) do if exist %%a\ exit /b
  4. for /f "delims=" %%a in ('dir /ad/b/s clnt svr update 2^>nul') do (
  5.   for %%? in (clnt svr update) do (
  6.     if exist "%%~dpa\%%?\" xcopy "%%~dpa\%%?" %%?\ /ehqy > nul
  7.   )
  8.   exit /b
  9. )
复制代码
以上是我在cn-dos搜索的老贴
我和楼主的目的都是要CD到Update的父目錄可是這裡怎麼是cd /d "C:\Documents and Settings\Administrator\桌面\soft\patch\1"
然後也沒看到再那進入Update的父目錄。。在我的電腦上已改Update为ChromePlusUserData运行一闪就没(WIN7)不懂了..

我现在想实现搜索ChromePlus下的ChromePlusUserData文件夹然后删除一部分不用的文件

求教。。

  1. rem  把下面的d:\改成你要搜索的路径就可以了
  2. @echo off&setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir/ad/s/b d:\^|findstr /e /i "update"') do (
  4.     set "str=%%i"
  5.     set "a=!str:update=update?!"
  6.     for /f "delims=?" %%j in ("!a!") do (
  7.         set "b=%%j"
  8.         if not defined !b! (
  9.          set !b!=000
  10.         set "c=!b:~,-6!"
  11.         echo !c! )
  12.     )      
  13. )
  14. pause
复制代码

TOP

CN-DOS不是有人给你写代码了吗,要不你先观摩一下别人是怎样使用for循环的?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

&ptid
原帖由 Batcher 于 2010-1-17 00:55 发表
不管是哪种语言或者脚本,你重复100次甚至10000次对某个变量赋值,那么你认为最后这个变量的值会是什么呢?
那要怎麼弄呀。。我不會

TOP

回复 13楼 的帖子

不管是哪种语言或者脚本,你重复100次甚至10000次对某个变量赋值,那么你认为最后这个变量的值会是什么呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

这个问题还挺考人的
我觉得楼主在顶楼描述的很清楚啊
对当前目录下所有目录进行判断,判断这些路径中是否存在updat目录,存在就cd进入到update上层目录,如c:\1\2\update,那么就cd到c:\1\2,同时另外还有一种特殊情况就是含有多个update目录如c:\1\2\update\update,这种情况还是以第一个为准,即还是进入到cd到c:\1\2。
技术问题请到论坛发帖求助!

TOP

for %%D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (if exist "%%D:\%Folder%" set "Target=%%D:\%Folder%")
cd %Target%
这里总是最后的盘下目录。。我是要一个个运行。。
怎么才能先到C:\%Target%盘的目录运行命令后再到其它盘*:\%Target%的目录运行命令呀最好是询问下要不要搜索下个盘
直接写出来吧。。我要疯了。。

[ 本帖最后由 Nano 于 2010-1-16 20:20 编辑 ]

TOP

回复 11楼 的帖子

还没有想明白吗?要不先把rem注释的行也删掉,再运行一遍?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2010-1-15 22:45 发表
把@echo off删除,看看你的代码做了些什么事情吧。

删除后屏显
--------------------------------------------------
这是回显不是代码:
D:\Users\i - Copy>for %D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do
(set "Folder=%D:\CloudCache" )


D:\Users\i - Copy>for / %a in (JumpListIcons) do (if not defined flag (if exist
"%a\" cd /d "%~dpa"  && set flag=CloudCache ) )

D:\Users\i - Copy>(if not defined flag (if exist "Z:\CloudCache\JumpListIcons\"
cd /d "Z:\CloudCache\"  && set flag=CloudCache ) )

D:\Users\i - Copy>echoZ:\CloudCache
The filename, directory name, or volume label syntax is incorrect.
Press any key to continue . . .

错误应该是命令直接找到了最后的盘符。。Z:而忽略了盘符C:~Y:而我的有含有JumpListIcons的CloudCache在D:盘和E:盘(D:\CloudCache\FFDCB536FC2C136CEC2E13F8A4F041DBD33E5F3B\1(这部分是随机命名的所以要搜索不能指定)\##PROGRAM_FILES##\ChromePlus\ChromePlusUserData\Default\JumpListIcons)我想按顺序查找先切到D:\**\JumpListIcons\..\执行命令。然后再切到E:\**\JumpListIcons\..\执行命令;如果增加了G:\**\JumpListIcons\..\就再切到*:\**\JumpListIcons\..\执行命令执行命令(PS:一定要切到目标文件夹)或者将JumpListIcons\..\设成变量调用。

[ 本帖最后由 Nano 于 2010-1-16 09:46 编辑 ]

TOP

回复 9楼 的帖子

把@echo off删除,看看你的代码做了些什么事情吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. for %%D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (set "Folder=%%D:\CloudCache")
  3. rem for /d /r "%Folder:"=%" %%a in (JumpListIcons) do (
  4.     if not defined flag (if exist "%%a\" cd /d "%%~dpa"&&set flag=CloudCache))
  5. echo%Folder%
  6. echo %cd%
  7. pause
复制代码
我想全盘收索。怎么就不成功呢?斑斑再帮我改一下。

TOP

本以为我认识繁体字,没想到楼主把它们组合在一起我就看不懂了。。。

我和楼主的目的都是要CD到Update的父目錄
我现在想实现搜索ChromePlus下的ChromePlusUserData文件夹然后删除一部分不用的文件
如果遇到1\update\update就不是返回1\update\而是1\update\update我要的是1\update\能從%ProgramFiles% %USERPROFILE%這2個位置先搜索嗎(繁体文仍然不加标点吗?)
原贴是搜UPDATE我是要搜ChromePlusUserData可是我在代码中替换不起做用。。

你到底想搜索什么呢?
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

原帖由 zqz0012005 于 2010-1-14 10:23 发表
那你说的“当前目录”是什么意思呢?你自己代码中给出了那样一个路径。

这是谁说的话呢?是你转载别人的还是你自己的要求?如果是你自己想要的,为什么这里是ChromePlusUserData而5楼又是update?

请把你自己的 ...
顶楼已说明了代码是我从CN-DOS拷来的一段自已看不懂的。。想请人解释下。。原贴是搜UPDATE我是要搜ChromePlusUserData可是我在代码中替换不起做用。。

TOP

那你说的“当前目录”是什么意思呢?你自己代码中给出了那样一个路径。
我和楼主的目的都是要CD到Update的父目錄可是這裡怎麼是cd /d "C:\Documents and Settings\Administrator\桌面\soft\patch\1"
然後也沒看到再那進入Update的父目錄。。在我的電腦上已改Update为ChromePlusUserData运行一闪就没(WIN7)不懂了..
我现在想实现搜索ChromePlus下的ChromePlusUserData文件夹然后删除一部分不用的文件

这是谁说的话呢?是你转载别人的还是你自己的要求?如果是你自己想要的,为什么这里是ChromePlusUserData而5楼又是update?

请把你自己的问题描述清楚!ORZ。。。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

原帖由 vsbat 于 2010-1-13 16:55 发表
@echo off
setlocal enabledelayedexpansion
for %%j in (C: D: E do (
for /f "delims=" %%i in ('dir /s /ad /b %%j\update 2^>nul') do set "t=%%i"&set "t=!t:\uuuuu=!
cd "!t!"
)
endlocal
pause
這個太慢了全盤搜索。。如果遇到1\update\update就不是返回1\update\而是1\update\update我要的是1\update\能從%ProgramFiles% %USERPROFILE%這2個位置先搜索嗎

[ 本帖最后由 Nano 于 2010-1-13 22:13 编辑 ]

TOP

返回列表