Board logo

标题: 批处理打开文件夹 [打印本页]

作者: online365     时间: 2006-11-25 10:56    标题: 批处理打开文件夹
我想写个批处理,dir /s /b /ad 后能打开指定的行数的文件夹(就是一个路径)

3Q....

麻烦打上 :: 好吗,方便我阅读....

作者: redtek     时间: 2006-11-25 11:57
) FOR "skip=你要跳过的行数-1..." .............( dir /s /b /ad ........) do ......找到的这个第一个(因已跳过n行),所以这行的%%i的值就是你要找的文件夹,
然后 START "文件夹的名字%%i”,,,后面就跳出 For 了:)

) 上面是获得文件夹的原理

) 请online365兄一定要自己亲自写出来,那怕只有一句也没有关系,这里还有这么多网友可以帮助你:)
  但是,如果online365兄一句也不写,则很难学会批处理和很难再进步的啊~:)

Last edited by redtek on 2006-11-24 at 11:01 PM ]

作者: namejm     时间: 2006-11-25 11:58
  把你的 dir 结果帖上来,然后说一下要指定哪一行。

作者: lxmxn     时间: 2006-11-25 13:14


@echo off
set/p choose=请选择你要打开的路径的行数:
cls
echo 请稍后,正在处理中…………
if "%choose%"=="1" start "" c:\ && goto cn-dos
set/a n=%choose%-1
for,/f,"delims= skip=%n%",%%a,in,('dir /ad/s/b c:\'),do,(
start "" "%%a"
goto cn-dos
)
:cn-dos
pause

作者: online365     时间: 2006-11-25 21:57
RE redtek:

代码是不是这样的啊??
for /f "skip=10" %%i in ('dir /s /b /ad') do echo %%i
这样不行啊,他只是跳过了第10行,但是第10行以后的还是会出现..
其实我自己也动了手的,但是试了多次都失败了,所以把它删了.呵呵,抱歉..

RE namejm:

我就是想 dir /s /b /ad c: 然后再指定打开第几行的文件夹...

RE lxmxn:

谢谢,非常好用,也成功解决了我之前无法解决路径含空格的问题~~ 决定加分~

redtek 大哥能再说详细点吗?谢谢了~~

作者: redtek     时间: 2006-11-25 22:11
回online365 兄: 

  lxmxn兄4楼代码中 start "" "%%a" 的指令是打开通过 Skip跳过指定行数的第一次for赋给%%i变量的内容,
  这个%%i的内容就是你需要并指定的第n行目录名:)

  所以,lxmxn兄在 start "" "%%a" 找到并打开目录的代码后面执行了: goto cn-dos 
  这样就可以结束 For 的操作了,如果这时候不结束(使用 goto 跳转出 for)那么 For 的特性可是全都读干净了才能退啊~:)
  如果让 For 读干净了信息,那你需要的可就不是指定的第n行目录名了~:)


  原理:使用for的skip参数指定跳过目标信息n行的操作来达到高速取得第n行目标信息,以加快速度和让操作变得更“直接”~:)
     (如果目标信息有10行,如果skip=10,那么for跳过10行,你读到的将是第10以后的第11行信息。所以有时候用n-1……)

     然后再利用 Goto 转向原理在得到需要的内容后,直接跳出for。
     就相当于中断了For的操作:)

     

Last edited by redtek on 2006-11-25 at 09:21 AM ]

作者: online365     时间: 2006-11-25 22:27
非常感谢 redtek 大哥,完全明白了为什么我自己试的会显示跳过的行数后面所有的内容了...

作者: ccwan     时间: 2006-11-25 23:08
呵呵……加分!

作者: redtek     时间: 2006-11-26 01:00
多谢online365和ccwan兄加分鼓励~:)

下面是另一种(另类)实现显示指定第n行目录名的方法~:)
只为试图实现不用for、不用临时文件看能不能实现显示第n行目录名的想法,不求实用,哈哈……

(只显示指定 DIR /B /AD 目录列表的第n行的目录名)
(注:这指令不危险,但是它会改变你运行这条指令的当前盘的卷标,实验完后请改回)

直接在命令行上键入指令:

如果当我 DIR /B /AD 列目录这样的内容:

addins
Application Compatibility Scripts
AppPatch
assembly
Cluster
…………很多……略…掉


我想用指令显示出第2行目录列表的内容:Application Compatibility Scripts

命令行键入以下代码:(显示目录列表中的第2行目录名-就是n-1的行--所以用了 MORE +1 就相当于跳过第1行显示)
          (显示的第1个内容就是第2行实际内容。)


dir /b /ad|more +1|LABEL 2>NUL|more +2|find /v ""|find /v "无效"


得到结果:

Application Compatibility Scripts


用了 find /v "无效" 是因为卷标只允许最长32个字节,但上面取出的内容超过了规定长度,所以滤掉了系统提示无效的内容:)



但上面这个想法能不能再让它稍微从另类的玩笑指令操作到实用一点点呢?
于是可以这样:


dir /b /ad|more +1|LABEL 2>NUL|more +2|find /v ""|find /v "无效"|CLIP


这样,运行以后,这个Application Compatibility Scripts被取出的内容就会存到你的剪辑板中,用的时候鼠标右键菜单里选择 “粘贴” 功能就行了:)

(使用前请记下卷标,以防被修改之后再改回喜欢的名字)

Last edited by redtek on 2006-11-25 at 12:04 PM ]

作者: ccwan     时间: 2006-11-26 01:33
我在WINDOWSXP SP2 下测试通过。加分!

redtek兄技术精,思路广,讲解明了,确令我佩服。

作者: online365     时间: 2006-11-26 02:39
再次谢谢 redtek 大哥,呵呵,又学一招...

作者: lxmxn     时间: 2006-11-26 20:33

  CLIP 是个外部小工具么?可否发上来用用?

作者: 不得不爱     时间: 2006-11-26 21:35
lxmxn的代码不错,加5分

作者: redtek     时间: 2006-11-26 22:04
CLIP.exe 是 Windows Server 2003系统自带剪贴板工具,只能写到剪贴板,但不能读取。虽自带另一个读取剪贴板的工具clipbrd.exe但根本不实用。
所以,如果操作更多的功能有如下第三方工具可以使用:)


第三方超强剪贴板数据操作工具(读取、写入、其它操作)以及使用方法详见下面精华贴~:)

批处理代码发帖着色脚本 Batch2ubb(CMD & GAWK)
http://www.cn-dos.net/forum/viewthread.php?tid=21664&fpage=1&highlight=%5B%E5%8E%9F%E5%88%9B%5D%E6%89%B9%E5%A4%84%E7%90%86%E4%BB%A3%E7%A0%81%E5%8F%91%E5%B8%96%E7%9D%80%E8%89%B2%E8%84%9A%E6%9C%AC%2BBatch2ubb%EF%BC%88CMD%2B%2B%2BGAWK%EF%BC%89


关于剪贴板工具的简单帮助信息:)


CLIP.exe 剪贴板工具 (Windows Server 2003系统自带此工具)
=============================================================

描述:
将命令行工具的输出重定向到 Windows 剪贴板。这个文本输出可以被粘贴到其他程序中。

参数列表:

/? 显示帮助消息。

示例:
DIR | CLIP 将一份当前目录列表的副本放入 Windows 剪贴板。

CLIP < README.TXT 将 readme.txt 的一份文本放入 Windows 剪贴板。






WinClip.exe 前贴板数据处理工具 (第三方工具)
=============================================================

usage: winclip -c|-p|-i
-v Display version and copyright information
-h Display this help message
-c Copy to clipboard
-p Paste from clipboard
-i Print the type of the clipboard's contents
-u Data to be copied / pasted is in Unicode format
-m Unicode data is multi-byte
-b Include BOM with Unicode data
-w Data is in the Windows code page (OEM code page is the default)
-l Specify the language for the data to be copied
-s Specify the sublanguage for the data to be copied



Last edited by redtek on 2006-11-26 at 09:05 AM ]
附件 1: clip.rar (2006-11-26 22:04, 34.27 KiB, 下载附件所需积分 1点 ,下载次数: 28)

作者: ccwan     时间: 2006-11-26 22:34
收下了。谢谢

作者: electronixtar     时间: 2006-11-27 01:07
可惜现在微软的安全设置太严格了,要不我早写一个vbs版的clip了。

作者: lxmxn     时间: 2006-11-27 09:53

  谢谢 超级版主 加分鼓励,同时也感谢 Redtek 兄的热心帮助。下载收藏了。

作者: lgfzy75     时间: 2009-1-25 00:15
start 文件夹
太有用了!