大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频。
今天我们学习批处理脚本中if命令条件处理控制语句,它的用法有很多,今天我们学习主要进行变量的一些判断,判断两个变量是否相等,变量的大于小于之类的 *** 作。
输入命令if /,可以看到这个命令的一些帮助和介绍,这个命令帮助介绍非常多,我这里用bat脚本开始和大家讲解一下。
我这里准备了一个批处理,这个批处理的代码在上边有,也比较简单,大家可以跟着中的代码,自己也写一下练习一下,这里简单的介绍一下这个代码,第二行第三行是接收用户的输入,把用户的输入保存到var1和var2变量中,第四行然后通过If命令进行判断两个是否相等,如果相等的话,输出相等,不相等的话输出不相等。
这个批处理中用到的其他的命令,比如set,echo,我在以前的文章和视频中都发布过,不太熟悉的朋友可以看以前我发布的文章和视频。
运行这个批处理,输入第一个字符1,和输入第二个字符2,第三行就进行了判断,输出了两个字符不相同,这个就是if命令语句判断两个变量是否相同不相同。
再测试一下,输入两个第一个字符1和第二个字符2,这个时候会提示两个字符是相同的。
我们再看一下参数i。而 /I 开关(如果指定)说明要进行的字符串比较不分大小写。
双击运运行一下,可以看到加了参数i,小写a和大写A是相同的。
我们把这个参数/i去掉。
再次运行,这里会提示小写a和大写A两个字符是不相同的。
我们再换一个判断变量大小的脚本,这里还是提示用户首先输入一个数字,然后根据用户输入的值进行判断,大于10会输出大于等于10,小于10的话会提示小于10。
运行这个脚本,然后输入了一个数字20,这个时候脚本提示这个数大于或等于10。
再次运行,这次输入了一个数字9,脚本提示次数小于10。
今天学的这个if命令主要进行两个变量的判断是否相等,还有变量的大于小于之类的一些 *** 作,if命令在bat批处理脚本中用的非常多,比较重要,大家可以多练习一下,关于if判断文件是否存在,我们下篇文章在讲解。
感谢观看本篇文章,希望对你有所帮助,本文由老盖聊技术原创,我是老盖,专注分享IT互联网与电脑知识,欢迎关注,本文是出于爱心帮助人的目的所写,请随意分享转载,帮助人越多爱的力量就越大,感谢正能量传播。
#include <stdioh>
#include <stdlibh>
main()
{
system("123bat haha");
}
bat里:
echo %1
执行后输出
haha
所以在system要执行的脚本名后面直接加上参数就可以了
#!/bin/sh
if [ $# -ne 1 ]; then
echo 1>&2 Usage: $0 [config_file]
exit 127
fi
SOURCE=`awk -F"=" '/^database_name/ { print $2 }' $1`
SECONDS=`date +%s`
TARGET=$SOURCE"_"$SECONDS
DESTINATION=/$SOURCE$DIALOG$VERSION
echo Database: $SOURCE
echo Dialog ID: $DIALOG
#drop the target databse
psql -c "drop database $TARGET"
#create database objects
psql $TARGET < postgres_createsql
#copy base tables
psql -c "copy (select from message) to stdout" $SOURCE | psql -c "copy message from stdin" $TARGET
$TARGET
psql -c "copy (select from qs_publicationstatustype) to stdout" $SOURCE | psql -c "copy qs_publicationstatustype from
stdin" $TARGET
#save the dialog
psql -c "copy (select from q_dialog where q_dialog_id = $DIALOG) to stdout" $SOURCE | psql -c "copy q_dialog from stdin"
$TARGET
#create database objects
psql $TARGET < postgres_indexsql
#make the destination directory
mkdir -p $DESTINATION
mkdir -p $DESTINATION/cdd
mkdir -p $DESTINATION/corticon
#create readme files
echo "Note: Rules assets are owned by a different user and will have to be copied separately" >> $DESTINATION/cdd/README
echo "Note: Rules assets are owned by a different user and will have to be copied separately" >>
$DESTINATION/corticon/README
#export the database
pg_dump $TARGET > $DESTINATION/postgres_createsql
#copy the import template to the destination
cp $TEMPLATE $DESTINATION/dialogsImportsh
chmod +x $DESTINATION/dialogsImportsh
#drop the temp database
psql -c "drop database $TARGET"
#append to the import config file
echo "database_name=$SOURCE" >> $DESTINATION/importcfg
#append to the import README file
echo "" >> $DESTINATION/README
echo "" >> $DESTINATION/README
echo " Program: dialogsImport" >> $DESTINATION/README
echo "" >> $DESTINATION/README
echo " Version 05" >> $DESTINATION/README
echo "" >> $DESTINATION/README
echo " Author: Dan Dreon" >> $DESTINATION/README
echo "" >> $DESTINATION/README
echo "" >> $DESTINATION/README
echo " run this script as the database user - typically postgres" >> $DESTINATION/README
echo " run this script from inside the dialogsImport folder" >> $DESTINATION/README
echo " psql must be in your path" >> $DESTINATION/README
echo " first edit the importcfg script and enter the appropriate values" >> $DESTINATION/README
echo " to run this script type /dialogsImport importcfg" >> $DESTINATION/README
echo " Note: rules assets need to be copied separately" >> $DESTINATION/README
#archive the directory
tar -zcvf $DESTINATIONtargz $DESTINATION
#delete the original
rm -rf $DESTINATION
如何把这个shell脚本移植到windows 的bat中?各位大虾们,小弟现在有个棘手的问题,请大虾们给以帮助。
VBS中接收外部传值的,在vbs中用WScriptArguments(0)这个参数进行获取。这里数字0代表接收第一个传值,1代表接收第二个传值,以此类推。
以下为一个小举例:
myVbsScriptvbs:
WscriptEcho "参数1:" & WScriptArguments(0) & vbcrlf & _"参数2:" & WScriptArguments(1) & vbcrlf & _
"参数3:" & WScriptArguments(2) & vbcrlf & _
"参数4:" & WScriptArguments(3) & vbcrlf & _
"参数5:" & WScriptArguments(4)
执行这样的命令: myVbsScriptvbs ca cb cc cd ce
最终效果:
批处理没法像VBS那样实现d出代窗口接受数据,只能用如下的方式:
::═════代═══码═══开═══始═════
@echo off
set/p t=请输入时间并回车:(格式为 XX:XX:XX)
at %t% shutdown -s -t 0
pause
::═════代═══码═══结═══束═════
变量定义和引用
1.MS-DOS shell 对变量、命令、命令行参数的大小写区分吗? 不区分
2.如何定义一个(环境)变量
SET <variable>=[<value>]
如果 <value> 是空字符串,则取消变量的定义,变量的值用双引号或空格结束。引号如果没有结束,则默认范围到行尾。
3.如何定义一个局部(环境)变量?
复制代码 代码如下:
SETLOCAL
SET <variable>=[<value>]
ENDLOCAL
变量 <variable> 的值会在 ENDLOCAL 后恢复到 SETLOCAL 以前的值
4.如何使用 MS-DOS 脚本的调用参数?
ECHO %<n>
N 的范围为 0-9 , %0 为文件名, %1-%9 为参数,每次调用脚本最多支持 9 个参数
ECHO %
% 代表所有传入的参数,即 %1-%9 ,并且包括其中的空白符
另外,调用参数是 %0-%1 是只读的,不可以重新赋值,否则程序挂起。
5. MS-DOS 如何分割脚本参数?
首先 MS-DOS 的解释器 CMD 会将命令提示符后的命令行中的有定义的环境变量全部展开(无定义的不变)。
然后,处理由 ^ 定义的转义字符。
最后,用双引号( " " )、逗号( , )、分号(;)和空白符分割,并将第一个分割后的部分用作命令名,其他的作为参数,所有的参数中都包含各自的双引号,然而命令名中的双引号在调用命令时没有影响。逗号和分号以及空白符则不包含在分割的各部分中。
注:变量在脚本中只展开一次,不会循环展开。
如果您用 set 语句定义一个字符串变量
那么每当程序脚本执行结束后,则不可以在使用这个变量了
也就是说您输入的字符串,只能在这一次的脚本运行期间能够使用的话:
set/p 语句可以帮助你
set/p a=请输入字符数据:
那么此时 a 变量则保存着您输入的字符数据
如果您需要这个程序永远运行期间都存在这个字符数据
则直接 set 定义一个字符串变量,如:
set "a=12345"
那么此时程序脚本每次运行的时候
a 变量永远保存着 12345 字符数据
您只需要调用这个变量即可
如果变量之间会产生变化,而这个变化的值是需要保存
供下一次程序使用,也就是说,程序是需要思维的
那么可以将 变量 的值写入一个数据文件内,如:
echo %a%>$
这里的 a 的值是未知的,我只是给你一个意思
意思就是把 a 的值写入数据文件内
那么现在需要调用它则是:
for /f "delims=" %%a in ($) do set "str=%%a"
echo %str%
此时的 str 变量则保存着上一次 a 的值
:: 中国批处理脚本联盟
使用os模块的system方法可以执行命令,例如执行D盘的cmdbat批处理脚本并传入参数p1:
import osossystem(r'D:\cmdbat p1')
set cnt=0
:loop
if "%1"=="" (echo %cnt% ) else (set /a cnt+=1&shift /1&goto :loop)
以上就是关于bat程序怎么判断输入的变量全部的内容,包括:bat程序怎么判断输入的变量、bat 如何传参数给 shell、bat调用VBS的时候怎么传参数,VBS怎么接收传过来的参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)