![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 23:44 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]关于无法转换%programfiles%成真实目录的问题 |
| 可打印版本 1,159 / 5 |
| 第1楼 IceCrack | 发表于 2006-08-14 13:47 |
| 中级用户 发帖 168 积分 332 来自 天涯 | |
|
[求助]关于无法转换%programfiles%成真实目录的问题 这个是我的lmrj.txt里面的东西
%ProgramFiles%\Dudu %SystemDrive%\NetBar %ProgramFiles%\3721 %SystemRoot%\System32\Drivers\CnsminKP.sys %ProgramFiles%\360so %ProgramFiles%\AD4All %ProgramFiles%\Baidu %ProgramFiles%\baigoo %ProgramFiles%\CNet %ProgramFiles%\CNNIC %ProgramFiles%\CoolWebsite %ProgramFiles%\CaiShow Tech 下面的是我的批处理文件 本来我的意图是在%programfiles%的真实路径中建文件夹的. 但是现在是在当前目录下建一个以%programfiles%的文件夹,里面再有一个dudu 为什么没有转换成真实地址呢? |
|
| 第2楼 IceCrack | 发表于 2006-08-14 14:54 |
| 中级用户 发帖 168 积分 332 来自 天涯 | |
|
@goto start
============================================================== 名称:流氓软件免疫程序 功能:阻止流氓软件进入系统 原理:设置文件夹的访问权限列表(ACL),由于FAT32的格式没有(ACL) 所以此文件只能在NTFS格式下才能使用.FAT32格式的用户若想使用此文件 须把系统先转换成NTFS格式,具体命令convent(欲转分区)/fs:ntfs 作者: IceCrack http://icecrack.ys168.com 日期: 2006-8-14 12:10:16 Monday ============================================================== :start @echo off color 0e title 流氓软件免疫程序 setlocal enabledelayedexpansion set choice= echo. echo. echo 请输入以下选项前面的数字 echo. echo 1: 安装流氓软件免疫程序 echo 2: 删除流氓软件免费程序 echo 3: 查看技术信息 echo 4: 退出 echo. echo. set /p choice= 输入你的选择: echo. if "%choice%"=="1" goto install if "%choice%"=="2" goto unin if "%choice%"=="3" goto view if "%choice%"=="4" goto quit cls goto start :view cls echo =========================================================================== echo. echo. echo 欢迎使用流氓软件免疫程序 echo IceCrack echo. echo 功能: echo 本软件通过访问控制列表(ACL)来免疫一些当前的流氓软件, echo. echo 注意: echo 本程序只能在NTFS系统下才能使用,因为FAT32系统是没有ACL的 echo 若真要使用本软件可以先把系统转换成NTFS格式. echo 具体命令convert "欲转分区" /fs:ntfs echo (注: 一是没有引号,二是分区后面要有一个: 如"c:") echo ============================================================================ echo. echo 按任意键,返回操作 pause >nul 2>nul cls goto start :install for /f "delims=" %%a in (lmrj.txt) do (@set b=%%a&&md "!b!" >nul 2>nul&&@setacl "!b!" /dir /deny everyone /full /p:no_dont_copy >nul 2>nul&&attrib +s +h "!b!" ) goto finished :unin for /f "delims=" %%a in (lmrj.txt) do (@set b=%%a&&md "!b!" >nul 2>nul&&setacl "!b!" /dir /grant everyone /full /p:yes >nul 2>nul&&@rd /q "!b!" >nul 2>nul) goto finished :finished echo 操作完成 echo. echo. echo 按任意键退出 pause >nul 2>nul :quit endlocal exit |
|
| 第3楼 zts59 | 发表于 2006-08-14 16:20 |
| 中级用户 发帖 104 积分 387 | |
|
变成“%programfiles%\xxxxxxxx”
路径中间有空格就要左右两边加引号的! |
|
| 第4楼 IceCrack | 发表于 2006-08-14 16:26 |
| 中级用户 发帖 168 积分 332 来自 天涯 | |
|
问题现在解决了
用了延迟变量 do ( set b=%%a set "b=!b:programfiles=%programfiles%!" set "b=!b:SystemDrive=%SystemDrive%!" set "b=!b:SystemRoot=%SystemRoot%!" ps:楼上的。我用的有引号的 |
|
| 第5楼 namejm | 发表于 2006-08-14 17:14 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by IceCrack at 2006-8-14 16:26: 应该叫变量延迟,呵呵。用这段代码的前提是把lmrj.txt里的百分号全部去掉。 |
|
| 第6楼 namejm | 发表于 2007-01-07 07:08 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
找到一个不用启用变量延迟的方法,演示代码如下:
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |