《我抽完一条烟也没想明白哪错》(1)DOS命令实现自动关机

简介: 给我整不会了,chao。。。



前言


给我整不会了,chao。。。

DOS命令基础

众所周知,网安学生啥都学,所以DOS也是绕不开的,只不过因为DOS多用于恶意小程序,以及一大堆没啥用的操作,很少有人学过这一门语言。


很多大佬问:DOS是干什么用的?


我只能苦笑说一个6。


据我所知(据我瞎扯),在计算机刚诞生的年代,是没有鼠标这种配件的,在这种情况下,DOS应运而生,通过命令行终端实现对文件、进程等等的操作。


DOS的破坏效果还是十分强大的,例如


  • 无限弹出命令行
  • 停止桌面进程
  • 让某个恶意程序在开机时自启动
  • 。。。。。。

echo 输出内容 类似于 print


学习DOS的第一步,自然是hello world。


首先,如果echo代表输出的话,我们就可以直接在bat文件中编辑


echo hello world!


点击运行后,会出现命令行一闪而过,咱也不到输出成功没有。


所以在上述命令后面,加入


pause


意义是在命令行输出之后暂停执行,避免命令行一闪而过的情况。


修改之后输出如下


91243eeb1e5f4f53a9e4eb482fb772b3.png


可以看到。。。怎么评价,


非常难看,对吧。


前面的执行路径看着非常闹心,有没有哪行命令能够搞掉他呢。


有的。


在文件执行的最前面,输入


@echo off


即可实现想要的效果


f7c2ef5d13a843a7aef09a4758babbe8.png


问题代码

上述命令会了吧,那就看看我们这次的问题


1e7c61c403c54ae18f0940f41b5f9c77.png


依次往下看,首先第一行


@echo off,屏蔽屏幕不合理输出。


title qingshu,设置标题,这是我的情书。


color f0 ,将执行时的背景颜色设为白色(f0),其他颜色寄几搜,屑屑。


echo ==============,两个都是为了美观,(为了)看起来像边框。


echo 1.....


echo 2.....自定义选项。


先跳过下面的一连串if语句,


直接从 :1 开始看,


首先,:1即是设置了一个名称为1的块,当然,这里并不是因为前面的自定义选项有1,2,3而强制要求,只要你喜欢,这里的名甚至可以改成你的前女友(doge


1中有一个set命令,即为设置一个变量,/p则是将用户输入的值赋给前面的变量,等号右边的拼音,则是类似于python中input()里的enter


a = input("enter")

注意:如果没有/p的话,a就等于等号右边的那一长串。


而下面的shutdown,有以下数据供解释


shutdown   -l      注销。这不能与 /m 或 /d 选项一起使用。

shutdown   -s      关闭计算机。

shutdown   -r      完全关闭并重新启动计算机。

shutdown   -a      中止系统关闭。

shutdown   -p      关闭本地计算机,没有超时或警告。

shutdown   -h      休眠本地计算机。

shutdown   -t xxx  将关闭前的超时时间设置为 xxx 秒。    

shutdown   -c "comment" 有关重新启动或关闭的原因的注释。

shutdown   -f      强制关闭正在运行的应用程序而不事先警告用户。

shutdown   -d [p|u:]xx:yy  提供重新启动或关闭的原因。

将这串命令丢出来后,就可以放心地讲goto了。


先说明这串代码中的几个块。


  • menu
  • 1
  • 2
  • 3

之所以在1、2中加入回到开头菜单的命令是因为


如果不回去的话,因为DOS命令是从上到下执行的


假设执行1,那么2、3也会在后续执行。


目光回到第一个set语句那里。


在这里,设置了一个名为num的变量,负责读取用户输入的数字,将其赋给自己。


通过goto语句,跳转到相应的块里面,执行相应的命令,而在变量左右加入%,则是表示引用该变量的值。


致命问题

在本段代码中,输入1之后并不能执行shutdown命令。


在我个人测试时,发现问题应该如下


shutdown是可以正常运行的,测试命令


shutdown -s -t 300


5分钟后关机,也是可以运行的。


问题就出在,如果执行


shutdown -s -t300


输出的错误信息和该程序正常执行报错是一样的。问题应该就出现在这,求大佬指教

目录
相关文章
|
7月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
104 2
|
7月前
|
关系型数据库 数据库连接 Windows
windows 常用的dos命令
windows 常用的dos命令
146 0
|
7月前
|
Java 程序员 Shell
Java(一)java跨平台原理及dos常用命令
Java(一)java跨平台原理及dos常用命令
54 1
|
7月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
65 0
|
7月前
|
算法 Linux Shell
【Shell 命令集合 磁盘管理 】Linux 于挂入MS-DOS文件系统 mmount 命令使用指南
【Shell 命令集合 磁盘管理 】Linux 于挂入MS-DOS文件系统 mmount 命令使用指南
101 0
|
7月前
|
存储 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
111 0
|
1月前
|
Windows
DOS 批处理 setlocal命令、endlocal命令详解
DOS 批处理 setlocal命令、endlocal命令详解
46 10
|
1月前
|
Windows
DOS 批处理 setlocal命令、endlocal命令详解
setlocal这是一个命令,它开始局部化环境更改,通常在批处理文件中使用,以确保在脚本中所做的任何环境更改(例如设置或修改环境变量)不会影响到调用此批处理的上下文或其他批处理文件
71 14
|
2月前
|
Java Windows
JAVA 常用的 DOS 命令
【10月更文挑战第15天】DOS 命令是 Java 开发中不可或缺的工具,掌握这些命令可以提高开发效率和操作便利性。
44 3
|
4月前
|
监控 JavaScript 前端开发
JAVA常用的DOS命令
JAVA常用的DOS命令