中国DOS联盟论坛

中国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:
问题现在解决了
用了延迟变量
do ( set b=%%a
set "b=!b:programfiles=%programfiles%!"
set "b=!b:SystemDrive=%SystemDrive%!"
set "b=!b:SystemRoot ...

  应该叫变量延迟,呵呵。用这段代码的前提是把lmrj.txt里的百分号全部去掉。
第6楼 namejm 发表于 2007-01-07 07:08
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  找到一个不用启用变量延迟的方法,演示代码如下:
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023