![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 13:38 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何实现用右键菜单调用bat文件完成移动文件的功能 |
| 可打印版本 3,075 / 43 |
| 第31楼 pinghu | 发表于 2008-02-07 23:46 |
| 中级用户 发帖 130 积分 307 | |
Originally posted by slore at 2008-2-6 12:54 PM: 17楼说的正确,如果用*表示应用到文件,要想应用到文件夹要用或者folder,却不能同时用directory和folder。用AllFileSystemObject可以应用到文件和文件夹 注册表真是挑剔啊,既要保证功能全面又要保证键值的功能没有冗余和重叠! call :sub1 “%%~dpnxi”这行中的“%%~dpnxi”是格式上是什么参数,起什么作用?? |
|
| 第32楼 pinghu | 发表于 2008-02-07 23:51 |
| 中级用户 发帖 130 积分 307 | |
|
楼上说的日志功能我也完全不会弄,我太菜了,
我写出来的东西还有许多语法上的错误,对批处理的语法也不熟悉 比如在for 语句的作用范围内跳转标签能否被识别? |
|
| 第33楼 pinghu | 发表于 2008-02-08 00:00 |
| 中级用户 发帖 130 积分 307 | |
|
为什么直接选中文件夹能实现上移,选中文件夹就不能实现呢,同样是盗用sub1啊,头疼
|
|
| 第34楼 pinghu | 发表于 2008-02-08 11:36 |
| 中级用户 发帖 130 积分 307 | |
|
我用了楼上说的’dir /b ' 结果成功了,能脱壳文件和文件夹,大功告成,学到不少东西,再把完整的批处理贴一次,以供大家使用
安装程序 @echo off call :%* 2>nul || goto setup goto :eof :Sub1 rem 移动到父目录 if not defined str set "str=%~nx1" if not exist "..\%~nx1" (move "%str%" "..\%~nx1" && set "str=" && goto :eof) call :Sub1 "%~n1_New%~x1" goto :eof :Sub2 rem 脱壳 cd "%~1" for /f "delims=" %%i in ('dir /b') do call :Sub1 "%%~dpnxi" goto :eof :setup reg add "hkcr\AllFilesystemObjects\shell\移至父目录\command" /f /t reg_sz /v "" /d "\"%~0\" Sub1 \"%%1\"" reg add "hkcr\directory\shell\脱壳\command" /f /t reg_sz /v "" /d "\"%~0\" Sub2 \"%%1\"" goto :eof 卸载程序 reg delete "hkcr\directory\shell\脱壳" /f reg delete "hkcr\AllFilesystemObjects\shell\移至父目录" /f |
|
| 第35楼 3742668 | 发表于 2008-02-08 12:16 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
Very Good!
不过,只是dir /b是无法拷贝隐藏文件的,另外卸载部分何不放在setup里面呢?在里面判断是否有相关的注册表项目,然后决定是安装还是卸载。 最重要的一点是在这个帖子里你收获到了多少?能否完全不看参考,仅凭思路来写有自己风格的代码? 例如你在前面12F提到过的问题究竟产生的原因是什么?注册表中的值的内容和批处理之间有什么联系?为什么有的地方要加引号,有的不用? 你可以自己尝试解决这些问题,如果有什么不明白的可以跟贴寻求提示。 |
|
| 第36楼 pinghu | 发表于 2008-02-08 13:34 |
| 中级用户 发帖 130 积分 307 | |
|
@echo off
call :%* 2>nul || goto choice goto :eof :Sub1 rem 移动到父目录 if not defined str set "str=%~nx1" if not exist "..\%~nx1" (move "%str%" "..\%~nx1" && set "str=" && goto :eof) call :Sub1 "%~n1_New%~x1" goto :eof :Sub2 rem 脱壳 pushd "%~1" for /f "delims=" %%i in ('dir /a /b') do call :Sub1 "%%~dpnxi" popd rd "%~1" goto :eof :choice set /p dd=安装A,卸载X,退出T: if "%dd%"=="a" goto setup if "%dd%"=="A" goto setup if "%dd%"=="x" goto unistall if "%dd%"=="X" goto unistall if "%dd%"=="t" goto :eof if "%dd%"=="T" (goto :eof) else echo 重新输入 &goto choice goto :eof :setup reg add "hkcr\AllFilesystemObjects\shell\移至父目录\command" /f /t reg_sz /v "" /d "\"%~0\" Sub1 \"%%1\"" reg add "hkcr\directory\shell\脱壳\command" /f /t reg_sz /v "" /d "\"%~0\" Sub2 \"%%1\"" goto :eof :unistall reg delete "hkcr\directory\shell\脱壳" /f reg delete "hkcr\AllFilesystemObjects\shell\移至父目录" /f goto :eof 这回把卸载也加进去了,还在dir 中加入了/a参数 我到现在也不知道本文中call 的用法,还有%1是如何在注册表和批处理中传递的 |
|
| 第37楼 pinghu | 发表于 2008-02-08 13:41 |
| 中级用户 发帖 130 积分 307 | |
|
加了dir /a /b 还是不能移动隐藏文件
|
|
| 第38楼 pinghu | 发表于 2008-02-08 13:50 |
| 中级用户 发帖 130 积分 307 | |
|
if "%dd%"=="a" goto setup
if "%dd%"=="A" goto setup两句能否写成一句呢 |
|
| 第39楼 slore | 发表于 2008-02-08 15:59 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
多看 /?
|
|
| 第40楼 pinghu | 发表于 2008-02-08 17:17 |
| 中级用户 发帖 130 积分 307 | |
|
想通了一个问题
在运行批处理文件时可以加参数 在call 标签调用子程序时同样可以加参数 |
|
| 第41楼 pinghu | 发表于 2008-02-08 17:23 |
| 中级用户 发帖 130 积分 307 | |
|
新手学习的一个重要问题
看来 /? 以后 对应用命令的格式不熟悉 比如 if "%dd%"=="a" goto setup if "%dd%"=="A" goto setup两句能否写成一句呢 这个问题 我使用if "%dd%"=="a" ^| "%dd%"=="A" goto setup 语法不对啊 |
|
| 第42楼 pinghu | 发表于 2008-02-08 18:00 |
| 中级用户 发帖 130 积分 307 | |
|
到底有没有不带赋值功能的逻辑运算符?楼上的问题可以用/i 参数解决
能不能用一个语句判断dd的值等于a b c其中之一就满足条件的 |
|
| 第43楼 3742668 | 发表于 2008-02-08 18:22 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
为什么还要交互呢? 在setup里面先测试注册表里面是否有安装信息,若有则自动卸载,若无则自动安装,结构上应该更加清晰明了一些。 |
|
| 第44楼 pinghu | 发表于 2008-02-09 12:42 |
| 中级用户 发帖 130 积分 307 | |
|
感谢3742668
的大力支持,如果你不帮我写的话,我是写不出来的,总之大功告成!比我预期的效果还要好!!再次感谢3742668!! |
|
| 上一页 1 2 3 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |