标题: [求助]关于无法转换%programfiles%成真实目录的问题
[打印本页]
作者: IceCrack
时间: 2006-8-14 13:47
标题: [求助]关于无法转换%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
下面的是我的批处理文件
for /f "delims=" %%a in (lmrj.txt) do (@md "%%a" >nul 2>nul&&@setacl "%%a" /dir /deny everyone /full /p:no_dont_copy >nul 2>nul&&attrib +s +h "%%a")
本来我的意图是在%programfiles%的真实路径中建文件夹的.
但是现在是在当前目录下建一个以%programfiles%的文件夹,里面再有一个dudu
为什么没有转换成真实地址呢?
作者: IceCrack
时间: 2006-8-14 14:54
@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
作者: zts59
时间: 2006-8-14 16:20
变成“%programfiles%\xxxxxxxx”
路径中间有空格就要左右两边加引号的!
作者: IceCrack
时间: 2006-8-14 16:26
问题现在解决了
用了延迟变量
do ( set b=%%a
set "b=!b:programfiles=%programfiles%!"
set "b=!b:SystemDrive=%SystemDrive%!"
set "b=!b:SystemRoot=%SystemRoot%!"
ps:楼上的。我用的有引号的
作者: namejm
时间: 2006-8-14 17:14
Quote: |
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里的百分号全部去掉。
作者: namejm
时间: 2007-1-7 07:08
找到一个不用启用变量延迟的方法,演示代码如下:
@echo off
for /f "delims=" %%i in (lmrj.txt) do call echo "%%i"
pause