![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-25 22:20 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,275 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » [已解決]如何使用for指令尋找檔案路徑~? |
| 可打印版本 1,649 / 13 |
| 第1楼 adan | 发表于 2007-09-19 19:02 |
| 初级用户 发帖 21 积分 56 | |
|
[已解決]如何使用for指令尋找檔案路徑~? 在自製整合xp當中也常遇到以下問題:
需要將光碟某些檔案複製到系統硬碟某些程式的資料夾內,例如... 將光碟根目錄下的dreye32.xpi複製到C:\program and files\adobe\???\reader\下 此時複製檔案路徑???非一定值,可能為"acrobat 7.0"或"acrobat 8.0"又或者是 其它版本的acrobat reader 在原先cmd內建指令中只有for可用,所以我使用了 for /d %%i in (*.*) do if exist "%programfiles%\adobe\%%i\reader\" set path=%%i 想把???等字元以萬用字元掃描出來 ps:dos指令下將%%i ---->%i 不過執行結果*.*卻只用"開始功能表"、"桌面"、"cookies"....等字串掃描 無法使用萬用字元掃描... 請問各位先進如何在for指令下用萬用字元掃描???感謝~:D [ Last edited by adan on 2007-9-19 at 10:27 PM ] |
|
| 第2楼 lxmxn | 发表于 2007-09-19 19:43 |
| 版主 发帖 4,938 积分 11,386 | |
|
try this:
|
|
| 第3楼 adan | 发表于 2007-09-19 19:56 |
| 初级用户 发帖 21 积分 56 | |
|
剛才試了版主所給的指令~成功了~
真是太感謝版主了!!!雖然不太懂詳細指令語法是何意義,不過還是十分感謝~~ 如果有那位版大可以解釋一下,可以從中學習到for指令用法~ 再次感謝版主~ |
|
| 第4楼 lxmxn | 发表于 2007-09-19 20:02 |
| 版主 发帖 4,938 积分 11,386 | |
|
关键是for命令的 /R 参数要理解一下,就是遍历子目录,后面接需要开始遍历的“根目录”参数,这里是“c:\program files\adobe\”,表示从“c:\program files\adobe\”开始遍历,括号()里面的“reader”表示需要找的文件/文件夹的名称,/r 参数结合/d参数,就是遍历文件夹了,再加上“if exist”使命令更加健壮了。
|
|
| 第5楼 adan | 发表于 2007-09-19 20:10 |
| 初级用户 发帖 21 积分 56 | |
|
版大真是熱心教學,受教了~~
可否再請問指令中 for /d /r "c:\program files\adobe\" %%a in (reader) do @if exist "%%a" set paths=%%a 為何需要加上"@"字元呢?~?有何作用~?? |
|
| 第6楼 lxmxn | 发表于 2007-09-19 20:15 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re adan:
呵呵,这是个人习惯,一般用在命令前面屏蔽命令行的回显,也可不要。 |
|
| 第7楼 adan | 发表于 2007-09-19 21:19 |
| 初级用户 发帖 21 积分 56 | |
|
嗯~問了一個問題從版大那得到不少的學問~:D
可否再請問指令之中: for /d /r "c:\program files\adobe\" %%a in (reader) do @if exist "%%a" set paths=%%a 意為: 在c:\program files\adobe\尋找萬用字元(/d)及樹狀目錄下(/r)若(if exist)在變數%%a目錄下存在reader目錄則設置(set)變數%%a為path變數(%paths%)。 那為何ECHO %paths%卻顯示"c:\program files\adobe\acrobat 8.0\reader 而非顯示指定字串"acrobat 8.0"?? |
|
| 第8楼 lxmxn | 发表于 2007-09-19 22:43 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re adan:
这里的%%a指的是找到之后匹配的全部目录字符串,而不是路径中的一部分部分。 如果你想显示包含版本号的文件夹,可以这样: |
|
| 第9楼 lp1129 | 发表于 2007-09-19 22:49 |
| 初级用户 发帖 92 积分 186 | |
|
以下命令中是遍历目录树
for /d /r "c:\program files\adobe\" %%a in (reader) do @if exist "%%a" set paths=%%a %%a代表的是c:\program files\adobe\目录下所有包含reader子目录的目录名 可以是以下几种: c:\program files\adobe\acrobat 8.0\reader c:\program files\adobe\123\reader c:\program files\adobe\123\123\reader 如是只有一个reader文件夹就只有第一种,如果还有其它reader文件夹就会出现其它目录 |
|
| 第10楼 lxmxn | 发表于 2007-09-19 23:51 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re lp1129:
一般就只有第一种情况,而你说的情况是特殊情况,具体情况具体对待嘛。 |
|
| 第11楼 lp1129 | 发表于 2007-09-20 14:24 |
| 初级用户 发帖 92 积分 186 | |
|
对,lxmxn版主指点的很正确,具体情况具体对待,最近刚学会不久,写批处理考虑的太多就画蛇添足了。
|
|
| 第12楼 lp1129 | 发表于 2007-09-20 14:36 |
| 初级用户 发帖 92 积分 186 | |
Originally posted by adan at 2007-9-19 09:19 PM: 找到一种方法可以显示出acrobat 8.0 变量载取! ECHO %paths:~23,-7% |
|
| 第13楼 adan | 发表于 2007-09-21 16:54 |
| 初级用户 发帖 21 积分 56 | |
|
RE:lp1129
嗯~在這中國DOS聯盟果然高手很多 您應該是利用參數%PATHS%內的字元順序將字串取出: %PATHS%="C:\Program Files\Adobe\Reader 8.0\Reader" 1 6 23 -7 -1 不過此指令我是用在將翻譯軟體的*.xpi檔外掛至acrobat reader,使開啟pdf檔時能利用翻譯軟體"即時"翻譯。也就是說,有些圖像文字軟體都需要尋找出來複製外掛,所以有可能所謂的%paths%變數內有許多組我所需要的字串,是否有辦法將變數內各組皆用此法取出字串,例%paths%變數為 "C:\Program Files\Adobe\Acrobat 6\Reader" "C:\Program Files\Adobe\Acrobat 7.0\Reader" "C:\Program Files\Adobe\Reader 8.0\Reader" 取出"Acrobat 6","Acrobat 7.0","Reader 8.0"三組字串? RE:lxmxn 請問一下1樓所說的指令在參數的順序上是否有一定的順序 "for /d /r "%programfiles%\adobe\" %a in (reader) do @if exist "%a" set paths=%a"------------->可以執行 "for /r /d "%programfiles%\adobe\" %a in (reader) do @if exist "%a" set paths=%a"------------->不可執行 [ Last edited by adan on 2007-9-21 at 05:01 PM ] |
|
| 第14楼 lxmxn | 发表于 2007-09-21 16:59 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re adan:
关于你的这个问题,已经在4楼明确的说明了。 关键是for命令的 /R 参数要理解一下,就是遍历子目录,后面接需要开始遍历的“根目录”参数。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |