【Dos-BatchPrograming】03
——1、AT 计划任务
Microsoft Windows [版本 10.0.19041.746] (c) 2020 Microsoft Corporation. 保留所有权利。 C:\Users\Administrator>at /? AT 命令已弃用。请改用 schtasks.exe。 AT 命令安排在特定日期和时间运行命令和程序。 要使用 AT 命令,计划服务必须已在运行中。 AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]] AT [\\computername] time [/INTERACTIVE] [ /EVERY:date[,...] | /NEXT:date[,...]] "command" \\computername 指定远程计算机。如果省略这个参数, 会计划在本地计算机上运行命令。 id 指定给已计划命令的识别号。 /delete 删除某个已计划的命令。如果省略 id, 计算机上所有已计划的命令都会被删除。 /yes 不需要进一步确认时,跟删除所有作业 的命令一起使用。 time 指定运行命令的时间。 /interactive 允许作业在运行时,与当时登录的用户 桌面进行交互。 /every:date[,...] 指定在每周或每月的特定日期运行命令。 如果省略日期,则默认为在每月的 本日运行。 /next:date[,...] 指定在下一个指定日期(如,下周四)运 行命令。如果省略日期,则默认为在每 月的本日运行。 "command" 准备运行的 Windows NT 命令或批处理 程序。 C:\Users\Administrator>
使用AT命令发现命令不再支持,被合并到schtasks.exe程序中了
C:\Users\Administrator>at AT 命令已弃用。请改用 schtasks.exe。 不支持该请求。 C:\Users\Administrator>
执行schtasks.exe之后输出:
C:\Users\Administrator>schtasks.exe 文件夹: \ 任务名 下次运行时间 模式 ======================================== ====================== =============== 360ZipUpdater N/A 就绪 Adobe Acrobat Update Task 2021/1/18 22:00:00 就绪 AMDAutoUpdate 2021/1/25 0:00:00 就绪 GoogleUpdateTaskMachineCore 2021/1/18 21:25:51 就绪 GoogleUpdateTaskMachineUA 2021/1/18 17:25:51 就绪 Huorong PopBlock N/A 正在运行 MicrosoftEdgeUpdateTaskMachineCore 2021/1/18 21:20:38 就绪 MicrosoftEdgeUpdateTaskMachineUA 2021/1/18 17:50:38 就绪 MindManagerV20 Notifications Check {S-1- 2021/1/19 17:20:00 就绪 NvBatteryBoostCheckOnLogon_{B2FE1952-018 N/A 就绪 NvDriverUpdateCheckDaily_{B2FE1952-0186- 2021/1/19 12:25:04 就绪 NVIDIA GeForce Experience SelfUpdate_{B2 N/A 就绪 NvNodeLauncher_{B2FE1952-0186-46C3-BAEC- N/A 就绪 NvProfileUpdaterDaily_{B2FE1952-0186-46C 2021/1/19 12:25:02 就绪 NvProfileUpdaterOnLogon_{B2FE1952-0186-4 N/A 就绪 NvTmRep_CrashReport1_{B2FE1952-0186-46C3 2021/1/19 12:25:04 就绪 NvTmRep_CrashReport2_{B2FE1952-0186-46C3 2021/1/18 18:25:04 就绪 NvTmRep_CrashReport3_{B2FE1952-0186-46C3 2021/1/19 0:25:04 就绪 NvTmRep_CrashReport4_{B2FE1952-0186-46C3 2021/1/19 6:25:04 就绪 OneDrive Standalone Update Task-S-1-5-21 2021/1/18 20:51:48 就绪 OneDrive Standalone Update Task-S-1-5-21 2021/1/19 11:02:02 就绪 OneDrive Standalone Update Task-S-1-5-21 2021/1/19 4:16:21 就绪 WpsUpdateTask_Administrator 2021/1/18 17:46:06 就绪 文件夹: \Microsoft 任务名 下次运行时间 模式 ======================================== ====================== =============== 信息: 目前在你的访问级别上不存在任何可用的计划任务。 文件夹: \Microsoft\Office 任务名 下次运行时间 模式 ======================================== ====================== =============== Office Automatic Updates 2.0 2021/1/19 11:51:51 就绪 Office ClickToRun Service Monitor 2021/1/19 5:30:26 就绪 Office Feature Updates 2021/1/18 21:02:26 就绪 Office Feature Updates Logon N/A 就绪 OfficeTelemetryAgentFallBack2016 N/A 就绪 OfficeTelemetryAgentLogOn2016 N/A 就绪 文件夹: \Microsoft\OneCore 任务名 下次运行时间 模式 ======================================== ====================== =============== 信息: 目前在你的访问级别上不存在任何可用的计划任务。
可以发现很多自动更新的程序,就挂在这个计划任务里面。。。
尝试对这个程序进行帮助信息查看:
C:\Users\Administrator>schtasks.exe /? SCHTASKS /parameter [arguments] 描述: 允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任 务。 参数列表: /Create 创建新计划任务。 /Delete 删除计划任务。 /Query 显示所有计划任务。 /Change 更改计划任务属性。 /Run 按需运行计划任务。 /End 中止当前正在运行的计划任务。 /ShowSid 显示与计划的任务名称相应的安全标识符。 /? 显示此帮助消息。 Examples: SCHTASKS SCHTASKS /? SCHTASKS /Run /? SCHTASKS /End /? SCHTASKS /Create /? SCHTASKS /Delete /? SCHTASKS /Query /? SCHTASKS /Change /? SCHTASKS /ShowSid /? C:\Users\Administrator>
——2、SET 环境变量
C:\Users\Administrator>set /? 显示、设置或删除 cmd.exe 环境变量。 SET [variable=[string]] variable 指定环境变量名。 string 指定要指派给变量的一系列字符串。 要显示当前环境变量,键入不带参数的 SET。 如果命令扩展被启用,SET 会如下改变: 可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配 SET 命令已使用的名称的所有变量的值。例如: SET P 会显示所有以字母 P 打头的变量 如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL 设置成 1。 SET 命令不允许变量名含有等号。 在 SET 命令中添加了两个新命令行开关: SET /A expression SET /P variable=[promptString] /A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式 评估器很简单并以递减的优先权顺序支持下列操作: () - 分组 ! ~ - - 一元运算符 * / % - 算数运算符 + - - 算数运算符 << >> - 逻辑移位 & - 按位“与” ^ - 按位“异” | - 按位“或” = *= /= %= += -= - 赋值 &= ^= |= <<= >>= , - 表达式分隔符 如果你使用任何逻辑或取余操作符, 你需要将表达式字符串用 引号扩起来。在表达式中的任何非数字字符串键作为环境变量 名称,这些环境变量名称的值已在使用前转换成数字。如果指定 了一个环境变量名称,但未在当前环境中定义,那么值将被定为 零。这使你可以使用环境变量值做计算而不用键入那些 % 符号 来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的, 那么它显示该表达式的最后值。该分配的操作符在分配的操作符 左边需要一个环境变量名称。除十六进制有 0x 前缀,八进制 有 0 前缀的,数字值为十进位数字。因此,0x12 与 18 和 022 相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字, 因为 8 和 9 不是有效的八进制位数。(& ) /P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入 行之前,显示指定的 promptString。promptString 可以是空的。 环境变量替换已如下增强: %PATH:str1=str2% 会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。 要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。 "str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的 开始到 str1 剩余部分第一次出现的地方,都一直保持相配。 也可以为扩展名指定子字符串。 %PATH:~10,5% 会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏 移量 10)字符开始的五个字符。如果没有指定长度,则采用默认 值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数, 使用的数字则是环境变量数值长度加上指定的偏移量或长度。 %PATH:~-10% 会提取 PATH 变量的最后十个字符。 %PATH:~0,-2% 会提取 PATH 变量的所有字符,除了最后两个。 终于添加了延迟环境变量扩充的支持。该支持总是按默认值被 停用,但也可以通过 CMD.EXE 的 /V 命令行开关而被启用/停用。 请参阅 CMD /? 考虑到读取一行文本时所遇到的目前扩充的限制时,延迟环境 变量扩充是很有用的,而不是执行的时候。以下例子说明直接 变量扩充的问题: set VAR=before if "%VAR%" == "before" ( set VAR=after if "%VAR%" == "after" @echo If you see this, it worked ) 不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中 的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个 复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和 "after",这两者永远不会相等。同样,以下这个例子也不会达到 预期效果: set LIST= for %i in (*) do set LIST=%LIST% %i echo %LIST% 原因是,它不会在目前的目录中建立一个文件列表,而只是将 LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在 FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量 是空的。因此,我们真正执行的 FOR 循环是: for %i in (*) do set LIST= %i 这个循环继续将 LIST 设成找到的最后一个文件。 延迟环境变量扩充允许你使用一个不同的字符(惊叹号)在执行 时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面 例子写成以下所示,以达到预期效果: set VAR=before if "%VAR%" == "before" ( set VAR=after if "!VAR!" == "after" @echo If you see this, it worked ) set LIST= for %i in (*) do set LIST=!LIST! %i echo %LIST% 如果命令扩展被启用,有几个动态环境变量可以被扩展,但不会出现在 SET 显示的变 量列表中。每次变量数值被扩展时,这些变量数值都会被动态计算。如果用户用这些 名称中任何一个明确定义变量,那个定义会替代下面描述的动态定义: %CD% - 扩展到当前目录字符串。 %DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。 %TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。 %RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。 %ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。 %CMDEXTVERSION% - 扩展到当前命令处理器扩展版本号。 %CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。 %HIGHESTNUMANODENUMBER% - 扩展到此计算机上的最高 NUMA 节点号。 C:\Users\Administrator>
查看环境变量:
C:\Users\Administrator>set ALLUSERSPROFILE=C:\ProgramData AMDRMPATH=C:\Program Files\AMD\RyzenMaster\ APPDATA=C:\Users\Administrator\AppData\Roaming CommonProgramFiles=C:\Program Files\Common Files CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files CommonProgramW6432=C:\Program Files\Common Files COMPUTERNAME=DESKTOP-6LUD84V ComSpec=C:\Windows\system32\cmd.exe DriverData=C:\Windows\System32\Drivers\DriverData FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer FPS_BROWSER_USER_PROFILE_STRING=Default FR_CUSTOMDATA_PATH=D:\SteamLibrary\steamapps\common\FaceRig\Mod\VP\PC_CustomData\ HOMEDRIVE=C: HOMEPATH=\Users\Administrator INTEL_DEV_REDIST=C:\Program Files (x86)\Common Files\Intel\Shared Libraries\ LOCALAPPDATA=C:\Users\Administrator\AppData\Local LOGONSERVER=\\DESKTOP-6LUD84V MIC_LD_LIBRARY_PATH=C:\Program Files (x86)\Common Files\Intel\Shared Libraries\compiler\lib\mic NUMBER_OF_PROCESSORS=12 OneDrive=C:\Users\Administrator\OneDrive OS=Windows_NT Path=C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files (x86)\NetSarang\Xftp 6\;C:\Program Files (x86)\NetSarang\Xshell 6\;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Yarn\bin\;C:\Program Files\nodejs\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;D:\mysql-5.7.30-winx64\bin;D:\apache-maven-3.6.3\bin;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Administrator\AppData\Local\GitHubDesktop\bin;C:\Users\Administrator\AppData\Local\Yarn\bin;C:\Users\Administrator\AppData\Roaming\npm PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PROCESSOR_ARCHITECTURE=AMD64 PROCESSOR_IDENTIFIER=AMD64 Family 23 Model 113 Stepping 0, AuthenticAMD PROCESSOR_LEVEL=23 PROCESSOR_REVISION=7100 ProgramData=C:\ProgramData ProgramFiles=C:\Program Files ProgramFiles(x86)=C:\Program Files (x86) ProgramW6432=C:\Program Files PROMPT=$P$G PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules PUBLIC=C:\Users\Public SESSIONNAME=Console SystemDrive=C: SystemRoot=C:\Windows TEMP=C:\Users\ADMINI~1\AppData\Local\Temp TMP=C:\Users\ADMINI~1\AppData\Local\Temp USERDOMAIN=DESKTOP-6LUD84V USERDOMAIN_ROAMINGPROFILE=DESKTOP-6LUD84V USERNAME=Administrator USERPROFILE=C:\Users\Administrator windir=C:\Windows C:\Users\Administrator>
上述可以看到环境变量都是以这种Key & Value的形式组成
我们可以通过 %Key% 来获取Value值
C:\Users\Administrator>echo %HOMEPATH% \Users\Administrator C:\Users\Administrator>
时间与日期也设置了变量,我们也可以以此获取:
C:\Users\Administrator>ECHO %DATE% 2021/01/18 周一 C:\Users\Administrator>ECHO %TIME% 17:33:23.21 C:\Users\Administrator>
——3、用户操作
Microsoft Windows [版本 10.0.19041.746] (c) 2020 Microsoft Corporation. 保留所有权利。 C:\Users\Administrator>net user /? 此命令的语法是: NET USER [username [password | *] [options]] [/DOMAIN] username {password | *} /ADD [options] [/DOMAIN] username [/DELETE] [/DOMAIN] username [/TIMES:{times | ALL}] username [/ACTIVE: {YES | NO}] C:\Users\Administrator>
更为详细的帮助信息:
C:\Users\Administrator>net user /help 此命令的语法是: NET USER [username [password | *] [options]] [/DOMAIN] username {password | *} /ADD [options] [/DOMAIN] username [/DELETE] [/DOMAIN] username [/TIMES:{times | ALL}] username [/ACTIVE: {YES | NO}] NET USER 将创建并修改计算机上的用户帐户。在不使用命令开关的情况下, 将列出计算机的用户帐户。用户帐户信息存储在用户帐户数据库中。 username 为可添加、删除、修改或查看的用户帐户的名称。用户帐户名称 最多可以有 20 个字符。 password 指定或更改用户帐户的密码。密码的长度必须符合 NET ACCOUNTS 命令的 /MINPWLEN 选项所设置的最小长度。 最多可以有 14 个字符。 * 生成密码提示。在密码提示下键入密码时,将不会显示密码。 /DOMAIN 在当前域的域控制器上执行此操作。 /ADD 向用户帐户数据库添加用户帐户。 /DELETE 从用户帐户数据库删除用户帐户。 选项 如下所示: 选项 描述 -------------------------------------------------------------------- /ACTIVE:{YES | NO} 激活或取消激活帐户。如果该帐户处于非激活状态, 用户将无法访问服务器。默认设置为“YES”。 /COMMENT:"text" 提供有关用户帐户的描述性注释。请将文本用引号 括起来。 /COUNTRYCODE:nnn 使用操作系统国家/地区代码执行指定的语言文件, 以显示用户帮助和错误消息。值 0 表示使用默认 的国家/地区代码。 /EXPIRES:{date | NEVER} 如果设置了日期,可导致帐户过期。 NEVER 将帐户设置为无时间限制。 过期日期采用格式 mm/dd/yy(yy)。 月份可以是一个数字、完整字母拼写, 或使用三个字母的缩写。年份可以使用两位数字 或四位数字。使用斜线(/)(不留空格) 将日期的各个部分隔开。 /FULLNAME:"name" 用户的全名(而不是用户名)。请将该名称用引号 括起来。 /HOMEDIR:pathname 用户的主目录设置路径。该路径必须存在。 /PASSWORDCHG:{YES | NO} 指定用户是否可以更改其密码。默认设置 为“YES”。 /PASSWORDREQ:{YES | NO} 指定用户帐户是否必须拥有密码。 默认设置为“YES”。 /LOGONPASSWORDCHG:{YES|NO} 指定用户是否应在下次登录时更改其密码。 默认设置为“NO”。 /PROFILEPATH[:path] 为用户登录配置文件设置路径。 /SCRIPTPATH:pathname 用户登录脚本的位置。 /TIMES:{times | ALL} 登录小时数。TIMES 表示为 day[-day][,day[-day]],time[-time][,time [-time]],增量限制为 1 小时。 日期可以是完整拼写,也可以是缩写。 小时可以是 12 或 24 小时表示法。对于 12 小时表示法,请使用 am、pm、a.m. 或 p.m。ALL 表示用户始终可以登录, 空白值表示用户始终不能登录。使用逗号将日期和时 间隔开,使用分号将多个日期和时间隔开。 /USERCOMMENT:"text" 允许管理员添加或更改帐户的用户注释。 /WORKSTATIONS:{computername[,...] | *} 列出用户可用于登录到网络的计算机,最多为八台。 如果 /WORKSTATIONS 没有列表,或其列表为 *, 则用户可以通过任何计算机登录到网络。 NET HELP 命令 | MORE 显示帮助内容,一次显示一屏。 C:\Users\Administrator>
加上用户名参数我们可以看到该用户的系统信息:
C:\Users\Administrator>net user administrator 用户名 Administrator 全名 注释 管理计算机(域)的内置帐户 用户的注释 国家/地区代码 000 (系统默认值) 帐户启用 Yes 帐户到期 从不 上次设置密码 2021-01-06 14:38:41 密码到期 从不 密码可更改 2021-01-06 14:38:41 需要密码 Yes 用户可以更改密码 Yes 允许的工作站 All 登录脚本 用户配置文件 主目录 上次登录 2021-01-16 13:58:15 可允许的登录小时数 All 本地组成员 *Administrators 全局组成员 *None 命令成功完成。 C:\Users\Administrator>
创建一个新用户:
net user 用户名 密码 /add
——4、用户组操作
C:\Users\Administrator>net localgroup \\DESKTOP-BMT96B6 的别名 ------------------------------------------------------------------------------- *__vmware__ *Access Control Assistance Operators *Administrators *Backup Operators *Cryptographic Operators *Device Owners *Distributed COM Users *Event Log Readers *Guests *Hyper-V Administrators *IIS_IUSRS *Network Configuration Operators *Performance Log Users *Performance Monitor Users *Power Users *Remote Desktop Users *Remote Management Users *Replicator *System Managed Accounts Group *Users 命令成功完成。 C:\Users\Administrator>
查看帮助信息:
C:\Users\Administrator>net localgroup /help 此命令的语法是: NET LOCALGROUP [groupname [/COMMENT:"text"]] [/DOMAIN] groupname {/ADD [/COMMENT:"text"] | /DELETE} [/DOMAIN] groupname name [...] {/ADD | /DELETE} [/DOMAIN] NET LOCALGROUP 修改计算机上的本地组。使用时如果没有选项,它将显示计算机上的本 地组。 groupname 为要添加、扩展和删除的本地组的名称。仅提供用以查看用户或本地 组中全局组的组名。 /COMMENT:"text" 为新组或现有组添加注释。将文本用引号括起来。 /DOMAIN 在当前域的域控制器上执行操作。否则,在本地工作站上执行该操作 。 name [ ...] 列出添加到本地组或从中删除的一个或多个用户名或组名。用空格将 多个条目隔开。名称可以是用户或全局组,但不能是其他本地组。如 果用户来自其他域,则用域名作为用户名的开始(例如,SALES \RALPHR)。 /ADD 将组名或用户名添加到本地组。必须为利用该命令添加到本地组的用 户或全局组建立帐户。 /DELETE 将组名或用户名从本地组删除。 NET HELP command | MORE 显示帮助,一次显示一屏。 C:\Users\Administrator>
权限最高的组是*administrators
把某一个用户添加到一个组中
net localgroup 组名 用户名 /add
如果是要添加到*administrator组中’
net localgroup administrators 用户名 /add