中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 13:02
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结]将文件拖动到BAT或VBS图标上以后自动修改脚本内容
可打印版本  1,582 / 13
第1楼 evilangell 发表于 2008-11-23 10:34
初级用户 发帖 32 积分 32
[已结]将文件拖动到BAT或VBS图标上以后自动修改脚本内容
这个bat或者vbs该怎么写????


现有一个文本文件:bak.txt
内容如下:


现在我想写这样一个bak.bat或者bak.vbs
现有一个fff.exe程序,
我直接把fff.exe拖动到bak.bat或者bak.vbs图标上,然后bak.txt变成如下:


可以继续拖动其它程序到bak.bat或者bak.vbs图标上,继续有序的添加

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


[ Last edited by HAT on 2008-11-24 at 02:03 ]
第2楼 evilangell 发表于 2008-11-23 12:18
初级用户 发帖 32 积分 32
谢谢HAT提醒,下次改正
第3楼 tireless 发表于 2008-11-23 16:00
银牌会员 发帖 1,122 积分 2,025
建议换一下方法。

拖入任意个数的文件到以下批处理上,每次拖入文件后,会修改 bak_行数.txt 的文件名中的行数数字,“行数”与 bak_行数.txt 文本中最后一行的行数对应,这样下次拖入文件时方便读取行数:


如要把 bak_行数.txt 中的内容添加到 Tmp.reg 中,执行这条命令:


START /wait regedit /s "%Temp%.\Tmp.reg" 这一句另外来执行,加到文本中太费事了。
第4楼 evilangell 发表于 2008-11-23 22:51
初级用户 发帖 32 积分 32
谢谢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"

因为每次手工添加太麻烦,所以才萌生拖进来自动添加的念头
第5楼 evilangell 发表于 2008-11-23 22:57
初级用户 发帖 32 积分 32
因为小弟对BAT高级应用不是很懂,所以再请tireless兄,出手帮忙
第6楼 evilangell 发表于 2008-11-23 23:58
初级用户 发帖 32 积分 32
恩,非常感谢,最好能去掉路径
第7楼 tireless 发表于 2008-11-24 00:05
银牌会员 发帖 1,122 积分 2,025

注:

① 最后一行要为空行。

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

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

这个数字就是 Windows Registry Editor Version 5.00 前面的行数。
第8楼 tireless 发表于 2008-11-24 00:07
银牌会员 发帖 1,122 积分 2,025
Originally posted by evilangell at 2008-11-23 11:58 PM:
恩,非常感谢,最好能去掉路径

哪个路径?
第9楼 evilangell 发表于 2008-11-24 00:12
初级用户 发帖 32 积分 32
谢谢朋友

经测试,发现如下问题:

1.我想去掉路径

2.只能添加到19个,再继续添加时,又变成了从第10个开始了
第10楼 evilangell 发表于 2008-11-24 00:14
初级用户 发帖 32 积分 32
@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"
第11楼 evilangell 发表于 2008-11-24 00:29
初级用户 发帖 32 积分 32
就是想把文件所在的路径去掉
第12楼 evilangell 发表于 2008-11-24 00:37
初级用户 发帖 32 积分 32
经多次测试,也不一定是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"
第13楼 tireless 发表于 2008-11-24 00:42
银牌会员 发帖 1,122 积分 2,025
改了一下,再试试:


[ Last edited by tireless on 2008-11-24 at 00:44 ]
第14楼 evilangell 发表于 2008-11-24 00:49
初级用户 发帖 32 积分 32
经测试,未发现问题,非常感谢朋友
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023