无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 11981|回复: 15
打印 上一主题 下一主题

[求助]批处理中%1 %2是 什么意思?

[复制链接]
跳转到指定楼层
1#
发表于 2006-5-9 09:15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下是一个批处理的内容:
1 @echo off
2 title Starting opera ...
3 cd\
4 if not exist "%ProgramFiles%\Winrar\rar.exe" goto rar2
5 "%ProgramFiles%\winrar\rar.exe" x -o+ \programs\opera\opera.rar %temp%\ >nul 2>nul
6 if "%1"=="" goto run2
7 goto run
8 :rar2
9 %1\programs\winrar\rar.exe x -o+ \programs\opera\opera.rar %temp%\ >nul 2>nul
10 goto run
11 :run
12 cd /d %temp%\opera\
13 start opera.exe "%1" "%2"
14 goto exit
:run2
cd /d %temp%\opera\
start opera.exe
goto exit
:exit
exit
其中第9 %1\programs\winrar\rar.exe x -o+ \programs\opera\opera.rar %temp%\ >nul 2>nul的“%1”是表示什么意思?
  13 start opera.exe "%1" "%2"  中的"%1" "%2" 又是表示什么呢?
2#
发表于 2006-5-9 13:45:56 | 只看该作者

[求助]批处理中%1 %2是 什么意思?

批处理的参数吧~
回复

使用道具 举报

3#
 楼主| 发表于 2006-5-10 11:20:15 | 只看该作者

[求助]批处理中%1 %2是 什么意思?

这几个参数的作用是什么呢?
回复

使用道具 举报

4#
发表于 2006-5-11 14:23:26 | 只看该作者

[求助]批处理中%1 %2是 什么意思?

是指批处理后面跟的参数
我们现在编辑一个很简单的批处理,比方说批处理名字叫xdir.bat
@echo off
dir %1 %2
如果你输入xdir /s /w,则此时%1就是/s参数,%2就是/w参数

讲解下这段:if "%1"=="" goto run2
也就是说如果批处理后面没有任何参数,也就是%1为空,则跳转到run2段
回复

使用道具 举报

5#
发表于 2006-5-11 14:33:53 | 只看该作者

[求助]批处理中%1 %2是 什么意思?

给你一点点讲一遍:
@echo off             ;关闭程序执行结果的显示
title Starting opera ...           ;这一行有误,要么在前面加上echo来显示这句话,要么在前面加上rem注解以下程序
cd\                        ;退回到根目录
if not exist "%ProgramFiles%\Winrar\rar.exe" goto rar2          ;如果不存在\%Pro..%\winrar\rar.exe"文件则跳转到run2段
"%ProgramFiles%\winrar\rar.exe" x -o+ \programs\opera\opera.rar %temp%\ >nul 2>nul                     ;解压缩opera.rar压缩包到%temp%目录下,并且不显示结果
if "%1"=="" goto run2         ;如果批处理后未跟任何参数则跳转到run2段
goto run                     ;跳转到run段
:rar2                    ;rar2段
%1\programs\winrar\rar.exe x -o+ \programs\opera\opera.rar %temp%\ >nul 2>nul         ;参数缩输入的盘符下的pro....路径下的rar解压缩opera.rar到%temp%目录下
goto run                ;跳转到run段
:run                   ;run段
cd /d %temp%\opera\              ;进入%temp%\opera\目录下,/d参数很重要,不仅可以转换目录,还可以连盘符都一起转换,如果该批处理不在C盘(默认情况下),如不加/d参数则会报错
start opera.exe "%1" "%2"                ;运行opera.exe,后跟%1 %2参数
goto exit              ;跳转到exit段
:run2                     ;run2段
cd /d %temp%\opera\             上面解释了
start opera.exe                 上面也解释了
goto exit                        同上
:exit                      ;exit段
exit                     ;退出cmd.exe
回复

使用道具 举报

6#
发表于 2006-5-11 14:36:29 | 只看该作者

[求助]批处理中%1 %2是 什么意思?

在默认情况下
%ProgramFiles%是指C:\Program Files
%temp%是指C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
自己在cmd中输入set就可以看到个个变量了
回复

使用道具 举报

7#
发表于 2006-5-11 19:10:26 | 只看该作者

[求助]批处理中%1 %2是 什么意思?

学习了............................
回复

使用道具 举报

8#
发表于 2006-5-13 09:33:42 | 只看该作者

[求助]批处理中%1 %2是 什么意思?

呵呵,在这方面,美泰和葛老师都是专家
回复

使用道具 举报

9#
 楼主| 发表于 2006-5-13 11:14:32 | 只看该作者

[求助]批处理中%1 %2是 什么意思?

   谢谢版主的热心解答,%1和%2 的理解还是有点模糊,“%1就是/s参数,%2就是/w参数”,为什么%1就一定是/s参数呢,%2就一定是/w参数呢?是不是指命令的第一个参数和第二个参数?
回复

使用道具 举报

10#
发表于 2006-5-19 13:37:46 | 只看该作者

[求助]批处理中%1 %2是 什么意思?

C:\WINDOWS>shift /?
更改批处理文件中可替换参数的位置。
SHIFT [/n]
如果命令扩展名被启用,SHIFT 命令支持/n 命令行开关;该命令行开关告诉
命令从第 n 个参数开始移位;n 介于零和八之间。例如:
    SHIFT /2
会将 %3 移位到 %2,将 %4 移位到 %3,等等;并且不影响 %0 和 %1。
回复

使用道具 举报

11#
发表于 2006-5-21 11:43:43 | 只看该作者
昨天回答了一下,怎么就不见了呐?可能是论坛正在转换吧,重新简单说一下

就是.....
比如说你编了一个批处理叫1.bat,里面只有一句:dir %1 %2 %3

如果你输入 1.bat  /x /y /z
则%1就是/x %2就是/y  %3就是/z
也就是你在批处理后面跟的参数可以"搬"到批处理内部来使用
回复

使用道具 举报

12#
发表于 2006-5-21 11:44:30 | 只看该作者
原帖由 cjzzz 于 2006-5-19 01:37 PM 发表
C:\WINDOWS>shift /?
更改批处理文件中可替换参数的位置。
SHIFT
如果命令扩展名被启用,SHIFT 命令支持/n 命令行开关;该命令行开关告诉
命令从第 n 个参数开始移位;n 介于零和八之间。例如:
    SHIFT /2
...





shift命令是将参数向前挪一位,并且过程不可逆,通常情况下%1就被"干掉"了,我一般不在头脑不太清醒的情况使用这个命令
回复

使用道具 举报

13#
 楼主| 发表于 2006-6-1 20:19:03 | 只看该作者
magictek 版主,清楚了,运行批处理还可加参数吗?这方面能不能给介绍?
    另外,在批处理后面跟的参数可以"搬"到批处理内部来使用 ,这样做有什么方便的地方?跟在bat文件中直接加参数有什么不同?
回复

使用道具 举报

14#
发表于 2006-6-2 22:34:49 | 只看该作者
原帖由 fzfchao 于 2006-6-1 08:19 PM 发表
magictek 版主,清楚了,运行批处理还可加参数吗?这方面能不能给介绍?
    另外,在批处理后面跟的参数可以"搬"到批处理内部来使用 ,这样做有什么方便的地方?跟在bat文件中直接加参数有什么不同?



举个很简单的例子,在以前,在一台2x的CD-ROM卖1500文的时候,那个时候的游戏光盘通常是一张光盘上有几十个甚至几百个游戏,很多光盘的游戏安装是通过批处理来实现的(那个时候的专门安装软件基本没有,甚至只有ACE和PKZIP等压缩软件,连ARJ都没有,就更别说RAR了,WinRAR更是至少五年以后的事情,Wise、NullInstall、InstallShield更是根本没人可以想象出来),光盘每个目录下都有一个名为install.bat的批处理,该批处理内容大概如下:

@echo off
if "%1"=="" goto error
goto setup

:setup
md %1\game
xcopy *.* %1\game /s /e
goto end

:error
echo Error!Please input Destination Driver Letter
echo Smaple: Install X:
goto End

:End

这个批处理的意思是,如果批处理后面未跟任何参数,则跳转到Error段,并显示两行信息后退出
正确的命令应该是intsall D:这样后面跟个盘符,这样%1变量就被赋予了D:
“搬”到批处理里面来,xcopy *.* %1\game /s /e就变成了xcopy *.* D:\game /s /e了

[ 本帖最后由 magictek 于 2006-6-2 10:36 PM 编辑 ]
回复

使用道具 举报

15#
发表于 2006-6-2 22:39:32 | 只看该作者
这个例子中就很清楚了,在编写批处理的时候,并不清楚客户想把这个游戏安装到哪个盘符,如果预先定制,简单又稳妥的方法是直接装C盘,但是很多客户会有意见,直接装D盘吧?可能有的用户真的只有一个C盘怎么办?也就是说该批处理就不具备通用性了,如果使用%1变量,则客户想安装到哪个盘,就可以安装到哪个盘
回复

使用道具 举报

16#
 楼主| 发表于 2006-6-3 23:54:40 | 只看该作者
谢谢版主,现在明白了^_^
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-24 23:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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