中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]将文件拖动到BAT或VBS图标上以后自动修改脚本内容
作者:
标题: [已结]将文件拖动到BAT或VBS图标上以后自动修改脚本内容 上一主题 | 下一主题
evilangell
初级用户





积分 32
发帖 32
注册 2008-4-18
状态 离线
『楼 主』:  [已结]将文件拖动到BAT或VBS图标上以后自动修改脚本内容

这个bat或者vbs该怎么写????


现有一个文本文件:bak.txt
内容如下:
>>"%Temp%.\Tmp.reg" ECHO "1"="aaa.exe"
>>"%Temp%.\Tmp.reg" ECHO "2"="bbb.exe"
>>"%Temp%.\Tmp.reg" ECHO "3"="ccc.exe"
>>"%Temp%.\Tmp.reg" ECHO "4"="ddd.exe"
>>"%Temp%.\Tmp.reg" ECHO "5"="eee.exe"
START /wait regedit /s "%Temp%.\Tmp.reg"
现在我想写这样一个bak.bat或者bak.vbs
现有一个fff.exe程序,
我直接把fff.exe拖动到bak.bat或者bak.vbs图标上,然后bak.txt变成如下:
>>"%Temp%.\Tmp.reg" ECHO "1"="aaa.exe"
>>"%Temp%.\Tmp.reg" ECHO "2"="bbb.exe"
>>"%Temp%.\Tmp.reg" ECHO "3"="ccc.exe"
>>"%Temp%.\Tmp.reg" ECHO "4"="ddd.exe"
>>"%Temp%.\Tmp.reg" ECHO "5"="eee.exe"
>>"%Temp%.\Tmp.reg" ECHO "6"="fff.exe"
START /wait regedit /s "%Temp%.\Tmp.reg"
可以继续拖动其它程序到bak.bat或者bak.vbs图标上,继续有序的添加

───────────────── 版务记录 ─────────────────
执行:HAT
操作:[2008-11-23]在帖子标题中增加搜索关键字;代码加code标签
说明:原标题"这个bat或者vbs该怎么写????"不利于论坛搜索
处罚:扣除2点积分
提示:建议阅读以下帖子
{1415}提问的智慧
{7326}论坛新手必读,所有人的基本行为准则
{22703}请不要做浮躁的人
{32667}[愤怒]那些连标题都写不清楚的人们啊,你们醒醒吧
{32825}本版严厉整顿烂帖
───────────────── 版务记录 ─────────────────


[ Last edited by HAT on 2008-11-24 at 02:03 ]

   此帖被 -2 点积分    点击查看详情   
评分人:【 HAT 分数: -2  时间:2008-11-23 10:47


2008-11-23 10:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
evilangell
初级用户





积分 32
发帖 32
注册 2008-4-18
状态 离线
『第 2 楼』:  

谢谢HAT提醒,下次改正

2008-11-23 12:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 3 楼』:  

建议换一下方法。

拖入任意个数的文件到以下批处理上,每次拖入文件后,会修改 bak_行数.txt 的文件名中的行数数字,“行数”与 bak_行数.txt 文本中最后一行的行数对应,这样下次拖入文件时方便读取行数:
@echo off
if "%~1" equ "" echo 请拖入任意个数文件到此批处理上。按任意键退出...&pause>nul&exit /b

cd /d "%~dp0"
if not exist bak_*.txt type nul>bak_0.txt

for /f "delims=_. tokens=2" %%a in ('dir /a:-d /b bak_*.txt') do (
  set n=%%a
  set file=bak_%%a.txt
)

for %%a in (%*) do (
  set /a n+=1
  >>%file% call echo "%%n%%"="%%~a"
)

ren %file% bak_%n%.txt
如要把 bak_行数.txt 中的内容添加到 Tmp.reg 中,执行这条命令:
copy "%Temp%.\Tmp.reg"+bak_行数.txt
START /wait regedit /s "%Temp%.\Tmp.reg" 这一句另外来执行,加到文本中太费事了。

2008-11-23 16:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
evilangell
初级用户





积分 32
发帖 32
注册 2008-4-18
状态 离线
『第 4 楼』:  

谢谢LS的朋友

其实最初的问题是这样的:

原先的那个bak.txt本来就是个BAT文件,是我提问时故意改的

源文件如下(名称为: Restrict受限.bat ):
@cls&@echo.&@color f3&@cd..\&@cls
> "%Temp%.\Tmp.reg" ECHO Windows Registry Editor Version 5.00
>>"%Temp%.\Tmp.reg" ECHO.
>>"%Temp%.\Tmp.reg" ECHO [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]
>>"%Temp%.\Tmp.reg" ECHO.
>>"%Temp%.\Tmp.reg" ECHO [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]
>>"%Temp%.\Tmp.reg" ECHO "1"="regedit.exe"
>>"%Temp%.\Tmp.reg" ECHO "2"="regedt32.exe"
>>"%Temp%.\Tmp.reg" ECHO "3"="cmd.exe"
>>"%Temp%.\Tmp.reg" ECHO "4"="rundll32.exe"
>>"%Temp%.\Tmp.reg" ECHO "5"="smagent.exe"
>>"%Temp%.\Tmp.reg" ECHO "6"="shell32.dll"
>>"%Temp%.\Tmp.reg" ECHO "7"="msconfig.exe"
>>"%Temp%.\Tmp.reg" ECHO "8"="mspaint.exe"
>>"%Temp%.\Tmp.reg" ECHO "9"="shutdown.exe"
>>"%Temp%.\Tmp.reg" ECHO "10"="hh.exe"
>>"%Temp%.\Tmp.reg" ECHO "11"="IEXPLORE.EXE"
>>"%Temp%.\Tmp.reg" ECHO.
>>"%Temp%.\Tmp.reg" ECHO [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
>>"%Temp%.\Tmp.reg" ECHO "RestrictRun"=dword:00000001
@START /wait regedit /s "%Temp%.\Tmp.reg"
@ping -n 2 127.0.0.1 > nul
@gpupdate.EXE /force > nul
@ping -n 2 127.0.0.1 > nul
@DEL "%Temp%.\Tmp.reg"


如果有个程序比如是OK.EXE拖进来到这个 Restrict受限.bat 里,或者tireless建的BAT文件中,则 Restrict受限.bat 内容变成如下:

@cls&@echo.&@color f3&@cd..\&@cls
> "%Temp%.\Tmp.reg" ECHO Windows Registry Editor Version 5.00
>>"%Temp%.\Tmp.reg" ECHO.
>>"%Temp%.\Tmp.reg" ECHO [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]
>>"%Temp%.\Tmp.reg" ECHO.
>>"%Temp%.\Tmp.reg" ECHO [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]
>>"%Temp%.\Tmp.reg" ECHO "1"="regedit.exe"
>>"%Temp%.\Tmp.reg" ECHO "2"="regedt32.exe"
>>"%Temp%.\Tmp.reg" ECHO "3"="cmd.exe"
>>"%Temp%.\Tmp.reg" ECHO "4"="rundll32.exe"
>>"%Temp%.\Tmp.reg" ECHO "5"="smagent.exe"
>>"%Temp%.\Tmp.reg" ECHO "6"="shell32.dll"
>>"%Temp%.\Tmp.reg" ECHO "7"="msconfig.exe"
>>"%Temp%.\Tmp.reg" ECHO "8"="mspaint.exe"
>>"%Temp%.\Tmp.reg" ECHO "9"="shutdown.exe"
>>"%Temp%.\Tmp.reg" ECHO "10"="hh.exe"
>>"%Temp%.\Tmp.reg" ECHO "11"="IEXPLORE.EXE"
>>"%Temp%.\Tmp.reg" ECHO "12"="OK.EXE"
>>"%Temp%.\Tmp.reg" ECHO.
>>"%Temp%.\Tmp.reg" ECHO [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
>>"%Temp%.\Tmp.reg" ECHO "RestrictRun"=dword:00000001
@START /wait regedit /s "%Temp%.\Tmp.reg"
@ping -n 2 127.0.0.1 > nul
@gpupdate.EXE /force > nul
@ping -n 2 127.0.0.1 > nul
@DEL "%Temp%.\Tmp.reg"

因为每次手工添加太麻烦,所以才萌生拖进来自动添加的念头

2008-11-23 22:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
evilangell
初级用户





积分 32
发帖 32
注册 2008-4-18
状态 离线
『第 5 楼』:  

因为小弟对BAT高级应用不是很懂,所以再请tireless兄,出手帮忙

2008-11-23 22:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
evilangell
初级用户





积分 32
发帖 32
注册 2008-4-18
状态 离线
『第 6 楼』:  

恩,非常感谢,最好能去掉路径

2008-11-23 23:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 7 楼』:  


@echo off
if "%~1" neq "" goto add
more +23 %0>"%Temp%.\Tmp.reg"
START /wait regedit /s "%Temp%.\Tmp.reg"
ping -n 2 127.0.0.1 > nul
gpupdate.EXE /force > nul
ping -n 2 127.0.0.1 > nul
DEL "%Temp%.\Tmp.reg"
exit /b

:add
cd /d "%~dp0"
for /f "delims==" %%a in ('findstr ^^\"[0-9].*\" %0^|sort /r') do (
  set "n=%%~a" & goto next
)

:next
for %%a in (%*) do (
  set /a n+=1
  >>%0 call echo "%%n%%"="%%~a"
)
exit /b

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]
注:

① 最后一行要为空行。

② 如果要在 Windows Registry Editor Version 5.00 前面增加或删除代码行,则要修改此句的红色数字:

more +23 %0>"%Temp%.\Tmp.reg"

这个数字就是 Windows Registry Editor Version 5.00 前面的行数。

2008-11-24 00:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by evilangell at 2008-11-23 11:58 PM:
恩,非常感谢,最好能去掉路径

哪个路径?

2008-11-24 00:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
evilangell
初级用户





积分 32
发帖 32
注册 2008-4-18
状态 离线
『第 9 楼』:  

谢谢朋友

经测试,发现如下问题:

1.我想去掉路径

2.只能添加到19个,再继续添加时,又变成了从第10个开始了

2008-11-24 00:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
evilangell
初级用户





积分 32
发帖 32
注册 2008-4-18
状态 离线
『第 10 楼』:  

@echo off
if "%~1" neq "" goto add
more +23 %0>"%Temp%.\Tmp.reg"
START /wait regedit /s "%Temp%.\Tmp.reg"
ping -n 2 127.0.0.1 > nul
gpupdate.EXE /force > nul
ping -n 2 127.0.0.1 > nul
DEL "%Temp%.\Tmp.reg"
exit /b

:add
cd /d "%~dp0"
for /f "delims==" %%a in ('findstr ^^\"[0-9].*\" %0^|sort /r') do (
  set "n=%%~a" & goto next
)

:next
for %%a in (%*) do (
  set /a n+=1
  >>%0 call echo "%%n%%"="%%~a"
)
exit /b

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]
"1"="regedit.exe"
"2"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\AnyDel.bat"
"3"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\IP自动设置.lnk"
"4"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\NTFS文件锁定程序.bat"

2008-11-24 00:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
evilangell
初级用户





积分 32
发帖 32
注册 2008-4-18
状态 离线
『第 11 楼』:  

就是想把文件所在的路径去掉

2008-11-24 00:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
evilangell
初级用户





积分 32
发帖 32
注册 2008-4-18
状态 离线
『第 12 楼』:  

经多次测试,也不一定是19个,有时会出现两个一模一样的
如下:

"8"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\防盗版黑屏.bat"
"9"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\手工迁移个人资料.bat"
"10"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\文件(S).bat"
"11"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\regedit.exe"
"12"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\Restrict受限.jpg"
"10"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\AnyDel.bat"
"11"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\IP自动设置.lnk"
"12"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\NTFS文件锁定程序.bat"
"13"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\Restrict生效.bat"
"14"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\Restrict生效.exe"
"15"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\Restrict受限(安全版).bat"
"16"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\UnRestrict.bat"
"17"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\防盗版黑屏.bat"
"18"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\手工迁移个人资料.bat"
"19"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\文件(S).bat"
"20"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\regedit.exe"
"21"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\Restrict受限.jpg"
"10"="C:\Documents and Settings\Administrator\桌面\Restrict+BAT\AnyDel.bat"

2008-11-24 00:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 13 楼』:  改了一下,再试试:


@echo off
if "%~1" neq "" goto add
more +20 %0>"%Temp%.\Tmp.reg"
START /wait regedit /s "%Temp%.\Tmp.reg"
ping -n 2 127.0.0.1 > nul
gpupdate.EXE /force > nul
ping -n 2 127.0.0.1 > nul
DEL "%Temp%.\Tmp.reg"
exit /b

:add
cd /d "%~dp0"
for /f %%a in ('find /v /c "" %0') do set "n=%%~a-2"
for /f "delims==" %%a in ('more +%n% %0') do set n=%%~a
for %%a in (%*) do (
  set /a n+=1
  >>%0 call echo."%%n%%"="%%~nxa"
)
exit /b

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]
[ Last edited by tireless on 2008-11-24 at 00:44 ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-11-24 02:03


2008-11-24 00:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
evilangell
初级用户





积分 32
发帖 32
注册 2008-4-18
状态 离线
『第 14 楼』:  

经测试,未发现问题,非常感谢朋友

2008-11-24 00:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: