无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6863|回复: 14
打印 上一主题 下一主题

只要托文件到bat就执行命令,要怎么弄呢?

[复制链接]
跳转到指定楼层
1#
发表于 2007-7-11 10:34:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
能不能将这段代码转变成 只要拖放文件到该文件就自可执行reg转bat的命令呢?类似于RAR 自动分卷压缩助手分割一样(附件)

@echo off
:regtobat
cls
title reg 转换为 bat
echo.
echo ───────────────────────────────────────
echo                              reg 转换为 bat
echo ───────────────────────────────────────
echo.
echo (先将需要转换的reg文件放置到当前文件夹 %cd% ,再执行转换)
echo.                           
set file=
set /p file= 请输入文件名(扩展名不用填):
If /I "%file%"=="" goto menu
if not exist "%file%.reg" goto noreg
echo @echo off > %file%.bat
for /f "tokens=*" %%a in ('type %file%.reg') do echo echo %%a ^>^> tempreg_.reg>>%file%_.bat
setlocal enabledelayedexpansion
for /f "delims=" %%i in (%file%_.bat) do (
    set var=%%i
    set var=!var:%%=%%%%!
    echo !var! >> %file%.bat
)
echo regedit /s tempreg_.reg>>%file%.bat
echo del /f /q tempreg_.reg>>%file%.bat
del /f /q %file%_.bat
cls
echo.
echo.
echo                 转换完成。已将“%file%.reg”转换为“%file%.bat”。
echo.
echo                               按任意键退出
pause >nul
exit
:noreg
cls
echo.
echo.
echo                             系统找不到指定的文件。
echo.
echo                               按任意键返回...
pause>nul
goto regtobat

RAR 自动分卷压缩助手.rar

1.74 KB, 下载次数: 90, 下载积分: 无忧币 -2

2#
发表于 2007-7-12 07:00:28 | 只看该作者
这个不能传递托放来的参数,有待改进
回复

使用道具 举报

3#
 楼主| 发表于 2007-7-12 18:22:31 | 只看该作者
有呀,在我上传的附件里就是了。自己下载看看撒。
回复

使用道具 举报

4#
发表于 2007-7-14 10:21:10 | 只看该作者
===============================
Set file_name=%~nx1
rem 取得拖过来对象的文件名(含后缀,不带路径),注意:外面没有" ",如果拖过来的是目录则为目录名。
Set path_name=%~dp1
rem 取得拖过来对象的完整路径,注意:外面没有" "
===============================
剩下的你自己改啰......
记得处理一下拖过来的不是reg文件或者是整个目录的情况。如果拖过来一个名字含.reg的目录:L
****以上只运行于2000或更高版本****

[ 本帖最后由 netwinxp 于 2007-7-14 10:34 AM 编辑 ]
回复

使用道具 举报

5#
 楼主| 发表于 2007-7-14 19:49:02 | 只看该作者
不懂,你能不能在我原来的基础上修改一下,然后发表一个完整的来呢
回复

使用道具 举报

6#
发表于 2007-7-15 11:09:52 | 只看该作者
我的"显示登录论坛.bat"

start notepad %1

将我的"登录论坛.bat"拖到"显示登录论坛.bat"就会用记事本打开的,你的哪个东东嘛,自己试试用参

数%1就ok了哈
回复

使用道具 举报

7#
发表于 2007-7-15 11:51:23 | 只看该作者
做好一个拖放的P处理并不简单。
1、可能要处理拖放过来的对象的路径名和文件名,如LZ。
2、要对拖放过来的对象的类型进行判断,象6楼的估计直接拖一个MPEG文件或目录过去就好玩了:lol
3、还要应对多个对象一起拖放,用%1,只会处理最前面的一个,想处理多个就要用shift来处理一下,另外—受环境块大小的影响,可能太多的拖放对象没办法全部得到处理。
回复

使用道具 举报

8#
 楼主| 发表于 2007-7-16 06:57:05 | 只看该作者
难道不能仿照附件上的代码来进行吗?
回复

使用道具 举报

9#
发表于 2007-7-16 10:33:07 | 只看该作者
差不多按你原来改的,顺便把生成的批处理文件中的临时注册表改名(你原来的是固定名tempreg_.reg),只支持单文件拖放,自己去调试。
@echo off
cls
title reg2bat程序——无忧启动论坛
echo.
echo ───────────────────────────────────────
echo                              reg 转换为 bat
echo ───────────────────────────────────────
echo.
set pathname=%~dp1
set filename=%~n1
set extname=%~x1
if /I "%extname%"==".reg" goto isreg
echo 不是注册表文件(.reg)
goto end
:isreg
echo 开始转换...
set srcname=%1
set tmpfile="%temp%\%filename%.tmp"
set tmpreg="%filename%_tmp.reg"
set objname="%pathname%%filename%.bat"
if exist %tmpfile% del %tmpfile%>nul
echo @echo off >%objname%
echo if exist %tmpreg% del %tmpreg%^>nul>>%objname%
for /f "tokens=*" %%a in ('type %srcname%') do echo echo %%a ^>^>%tmpreg%>>%tmpfile%
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('type %tmpfile%') do (
    set var=%%i
    set var=!var:%%=%%%%!
    echo !var! >>%objname%
)
endlocal
echo regedit /s %tmpreg%>>%objname%
echo del /f /q %tmpreg%>>%objname%
del /f /q %tmpfile%
set objname=
set tmpreg=
set tmpfile=
set srcname=
echo 转换完毕!
echo.
echo ───────────────────────────────────────
:end
set pathname=
set filename=
set extname=
echo                               按任意键退出
pause >nul

[ 本帖最后由 netwinxp 于 2007-7-16 12:49 PM 编辑 ]
回复

使用道具 举报

10#
发表于 2007-7-16 10:36:06 | 只看该作者
多对象的,你就慢慢改,酱紫才会进步:lol,另外:你原来批处理对临时文件的处理方法不正确(我帮你改过了),会造成有些注册表转换不了。:(

[ 本帖最后由 netwinxp 于 2007-7-16 12:38 PM 编辑 ]
回复

使用道具 举报

11#
 楼主| 发表于 2007-7-16 17:53:19 | 只看该作者
不啊,我想没有必要去弄多对象的,拖单个reg文件就执行转换,我就想这样而已。
回复

使用道具 举报

12#
发表于 2007-7-16 18:01:12 | 只看该作者
原帖由 kidzgy 于 2007-7-16 17:53 发表
不啊,我想没有必要去弄多对象的,拖单个reg文件就执行转换,我就想这样而已。

上面的那代码已经可以了啊!!!:o
回复

使用道具 举报

13#
 楼主| 发表于 2007-7-17 07:37:45 | 只看该作者
可是我要托来执行命令的啊,你给的我看不懂,为什么不把全部弄好呢?这样看的话很方便
回复

使用道具 举报

14#
发表于 2007-7-17 10:37:19 | 只看该作者
你把那些代码直接存成一个reg2bat.cmd的文件就好了,难道这个你也不会?:o
然后想转换哪个注册表文件就直接把那个.reg文件拖到reg2bat.cmd身上放开,就直接转成一个和注册表文件同名的批处理文件了,这不是拖放哪我就不懂什么是拖放了。 :L
你大概就是要那种先打开批处理,然后再把文件拖到那个批处理窗口,最后再按回车的吧?你不觉得那样子效率更低吗?

[ 本帖最后由 netwinxp 于 2007-7-17 10:54 AM 编辑 ]

拖放1.GIF (3.2 KB, 下载次数: 55)

拖来注册表文件

拖来注册表文件

拖放2.GIF (2.33 KB, 下载次数: 60)

生成批处理文件

生成批处理文件

拖放3.GIF (3.54 KB, 下载次数: 57)

拖来非注册表文件

拖来非注册表文件

拖放4.GIF (7.95 KB, 下载次数: 69)

错误提示

错误提示
回复

使用道具 举报

15#
 楼主| 发表于 2007-7-17 15:59:47 | 只看该作者
没错,就是这样了.太感谢了...感激不尽!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-15 23:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表