![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 15:52 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [挑战3] 取得最终有效目录[ 难度:☆] |
| 可打印版本 1,728 / 11 |
| 第1楼 baomaboy | 发表于 2007-04-30 14:19 |
| 银牌会员 发帖 554 积分 1,513 | |
|
[挑战3] 取得最终有效目录[ 难度:☆] 运行前:在你的 D: 盘下 建立目标文件夹
md "ab\c d\e2f.exe" 我们的字符串为: set "FilePath=d:\ab\c d\e2f.exe\xlay\cdkey" 目标:验证每一层,并给出提示。 提取出 "d:\ab\c d\e2f.exe" 最后输入: 有效路径:d:\ab\c d\e2f.exe 目标文件名:e2f.exe 目标文件属性:文件夹 可以使用P和VBS。 [ Last edited by baomaboy on 2007-4-30 at 02:53 PM ] |
|
| 第2楼 baomaboy | 发表于 2007-04-30 15:07 |
| 银牌会员 发帖 554 积分 1,513 | |
Set WshSHell = WScript.CreateObject("WScript.Shell") [ Last edited by baomaboy on 2008-3-25 at 12:55 AM ] |
|
| 第3楼 flyinspace | 发表于 2007-04-30 15:11 |
| 银牌会员 发帖 517 积分 1,206 | |
|
[p 处理版]。。写得不好请原谅。 @echo off & setlocal EnableDelayedExpansion
set "FilePath=d:\ab\c d\e2f.exe\xlay\cdkey" rem ---------------------------------------------------------- rem 下面这段代码为建立文件夹代码。。。可以忽略不记 if not exist "d:\ab\c d\e2f.exe" md "d:\ab\c d\e2f.exe" rem ---------------------------------------------------------- :main for /f "delims=\ tokens=* " %%i in ("%FilePath%") do ( set "FileName=%%~nxi" if not exist "!FilePath!" ( call :GetLen "!FileName!" call :GetPath !Len! echo %FilePath%路径错误,正重新检验。 goto :main ) echo 有效路径:!FilePath! echo 有效文件名:!FileName! ) goto :END :GetPath set "parm1=%~1" set "FilePath=!FilePath:~0,-%parm1%! goto :EOF :GetLen set aaa=%~1 set Len=0 for /l %%i in (0,1,255) do ( if "!aaa:~%%i,1!"=="" ( set /a "Len=%%i+1" goto :EOF ) ) goto :EOF :END pause rem 清除建立的文件夹。演示完成 rd /s /q "d:\ab\c d\e2f.exe" |
|
| 第4楼 chkau | 发表于 2007-04-30 15:56 |
| 初级用户 发帖 47 积分 101 | |
|
LZ的题目是验证每一层,楼上的代码需稍做修改
|
|
| 第5楼 youxi01 | 发表于 2007-04-30 21:06 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
我昨天写了相关代码。今天只是将代码稍微做了改动,见笑。
[ Last edited by youxi01 on 2007-4-30 at 09:07 PM ] |
|
| 第6楼 flyinspace | 发表于 2007-04-30 22:25 |
| 银牌会员 发帖 517 积分 1,206 | |
Originally posted by youxi01 at 2007-4-30 08:06 AM: |
|
| 第7楼 youxi01 | 发表于 2007-05-01 01:28 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
其实也符合题目要求,不过没给出全部路径而已。
稍微改动如下: |
|
| 第8楼 flyinspace | 发表于 2007-05-01 02:48 |
| 银牌会员 发帖 517 积分 1,206 | |
Originally posted by youxi01 at 2007-4-30 12:28 PM: |
|
| 第9楼 zhoushijay | 发表于 2007-05-01 05:45 |
| 高级用户 发帖 375 积分 845 | |
|
@echo off & setlocal enabledelayedexpansion
set fp="d:\ab\c d\e2f.exe\xlay\cdkey" for /f "delims=\ tokens=1-5" %%a in (%fp%) do ( for %%z in (%%a,\%%b,\"%%c",\%%d,\%%e) do (set all=!all!%%z if exist !all! (echo !all!路径正确! set ok=!all! ) else (echo !all!路径错误! ) ) ) echo 最终路径为 !ok! pause 虽然检测出的路径是 d:\ab\"c d"\e2f.exe 但是不影响 if exist 的判断 |
|
| 第10楼 flyinspace | 发表于 2007-05-01 06:16 |
| 银牌会员 发帖 517 积分 1,206 | |
|
1,若能去处这个 " 就更好了。。
2,若 我们的目录层不止五层呢?? 运行结果为:
但对参与热情予以支持,加一分。 |
|
| 第11楼 zhoushijay | 发表于 2007-05-01 06:21 |
| 高级用户 发帖 375 积分 845 | |
|
目录的层数只要在tokens=1-5这里改一下,然后在第2个for中加入相应的变量参照就可以了
|
|
| 第12楼 flyinspace | 发表于 2007-05-01 06:40 |
| 银牌会员 发帖 517 积分 1,206 | |
Originally posted by zhoushijay at 2007-4-30 05:21 PM: 呵呵,但我们的目录是不确定的。。 有可能是5个,也有可能是4个。。 更有可能有10多个。。 给一个是不想生成临时文件。。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |