标签: windows-command-prompt

获取最后一个shell命令的错误代码

使用bash,执行的最后一件事的退出代码存储在$?shell 变量中:

foo
bar
echo $?  # prints exit code of `bar`

baz
echo $?  # prints exit code of `baz`
Run Code Online (Sandbox Code Playgroud)

如果我cmd在 Windows 下运行脚本,是否有等效的方法来获取此值?(注意:诉诸于诸如运行 Python 脚本然后调用其自己的库函数之类的方法并不是我在这里所追求的。)

windows windows-command-prompt

3
推荐指数
1
解决办法
3569
查看次数

从 CLI(或 .bat 文件)的路径中检测到带有空格的注册表项?

我遇到了一个问题,我的经验(和 Google-fu)让我失望。

基本上,我需要将KB968730送给几百个左右的客户。当然,希望在开始安装之前检查修补程序的安装。遗憾的是,我需要使用脚本和 GPO 来执行此操作,而不是像 SCCM 这样的适当系统。通常不会给我带来任何问题的东西,但是,似乎有一个问题。

问题是此修补程序安装的注册表项的路径中有一个血腥的空间。具体来说,它安装到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730.

毫不奇怪,标准的批处理文件/CMD 命令reg.exe query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730会引发语法错误并弄乱了我的批处理文件的安装检查部分 - 它将路径的第二部分视为第二个参数。所以,当然,我尝试用双引号封装路径,没有乐趣。单引号,没有乐趣。威胁我的操作系统和/或 Microsoft 也没有产生结果。

经过一些谷歌搜索和咒骂之​​后,我找到了似乎可以解决此问题的方法,但无法完全正常工作,出于某种原因我无法弄清楚。(毫无疑问,因为这些天我的编码技能很弱,而且字符串标记化在最好的时候让我陷入了循环。)

似乎我想使用的是这样的:

for /f "Tokens=2,*" %%a in (‘reg.exe "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730" /v Path’) do (set xpath=%%a)然后使用%xpath%,但这不起作用。将标记设置为 1 给我空间之前的路径,设置为 2 给我空间之后的路径,我不知道如何将一个值附加到另一个值。特别令人沮丧,因为我看到的所有答案都说“谢谢,它奏效了!!!” 或类似。*(需要注意的是,%直接在命令行上执行时删除一个。)

有谁知道我在这里搞砸了什么?

或者,如果有人仍然使用 VBS 并且知道如何使用它,我很乐意选择该选项。(不过,没有 PowerShell,因为我们的 XP 客户端没有安装它。)

PS,如果这更适合 StackOverflow,我对它的迁移没有任何问题,但我最初的想法是“我们”不喜欢开发人员来到这里并向 [向我们] 询问有关设置他们的开发的琐碎问题机器,所以我想他们可能会对我的问题有同样的感觉。

scripting windows-xp batch-file windows-command-prompt

3
推荐指数
1
解决办法
8416
查看次数

如何使用命令行诊断 RDP?

我有一台带有 1and1 的服务器,他们已经放弃尝试恢复 RDP 访问(根本没有尝试)并告诉我重新映像服务器。由于这是一台生产机器,我想避免这种情况,因为它会涉及缓慢的 FTP 恢复,而且我不确定它是否真的能解决问题。

机器重新启动,失去了与现有凭据的RDP 连接。我按照以下说明设法以管理员身份访问远程服务器上的命令提示符:http ://help.1and1.com/servers-c37684/windows-server-c39510/system-recovery-c76208/resolving-a -failed-connection-to-remote-desktop-a627381.html

现在,我已经终止了防火墙和 ipsec 进程。仍然没有骰子。我可以用 CMD.exe 做什么

1)诊断情况(是windows还是网络问题)

2) 可能补救RDP连接的丢失

服务器详情:

  • 视窗服务器 2012
  • 站点正在运行(IIS/W3P 很好)
  • 终端服务正在运行
  • 防火墙已禁用
  • ipsec 已禁用
  • 没有网络防火墙(暂时在主机控制面板中禁用)
  • 可以从当前位置ping通(重启前工作正常)
  • 不确定内部特定于域的网络设置...

更新:

添加了注册表值以确保启用远程连接:http : //expertpandas.com/blog/index.php/enabledisable-rdp-using-command-prompt-for-windows-2012/

还发现了这一点: 但我不确定如何使用 CMD 设置启动策略... http://www.techrepublic.com/forums/questions/remote-desktop-does-not-connect-after-a-restart /

windows rdp configuration serial windows-command-prompt

3
推荐指数
1
解决办法
5万
查看次数

如何使用 psexec 运行多个命令?

我需要在我们的一些工作站上运行一个命令来卸载最前沿,并且在格式化命令时遇到了一些麻烦。

这是需要发生的事情(在多个命令中)

xcopy \\serverpath\Installer.exe C:\Windows Install.exe /u /s Del C:\Windows\Install.exe

我正在将 psexec 与计算机列表一起使用,但一直遇到错误。这就是我的命令现在的样子。

psexec @ComputerList.txt -u domain\administrator cmd /c (xcopy "\\NetworkPath\Forefront Software\Install.exe" "C:\Windows" && Install.exe /u /s && del C:\Windows\Install.exe)
Run Code Online (Sandbox Code Playgroud)

我认为路径名和引号中的空格把事情搞砸了......

编辑:

尝试使用脚本运行它但没有运气。看起来 scepinstall.exe 只是挂在远程机器上。我也尝试使用可以在C:\Windows\ccmsetup\

谢谢您的帮助

command-line-interface copy windows-command-prompt uninstall pstools

3
推荐指数
1
解决办法
4万
查看次数

用于列出审核策略设置的命令行工具

我正在尝试找到一种命令行方式来从本地安全策略获取安全设置。具体来说是安全设置 > 本地策略 > 审核策略。策略和当前安全设置的列表。能够查看策略是否可编辑或者是否从其他来源设置将是一个额外的好处,但不是必需的。

本地安全策略窗口中的相关设置:

在此输入图像描述

audit windows-command-prompt

3
推荐指数
1
解决办法
4万
查看次数

获取 PowerShell 命令输出作为 bat (cmd) 脚本中的变量

我正在尝试在某些 .cmd 文件中获取主机的 FQDN。我们有脱节的 AD 域,所以"@echo %COMPUTERNAME%.%USERDNSDOMAIN%"不起作用。我的意思是它有效,但返回错误的值。

我最终得到的解决方案是 powershell.exe -noninteractive -command[System.Net.Dns]::GetHostByName(($env:computerName)).HostName

它在命令行中工作正常。我试图将它放入我的 cmd 文件中的一个变量中:

FOR /F "tokens=* USEBACKQ" %%F IN (\`powershell.exe -noninteractive -command     
[System.Net.Dns]::GetHostByName(($env:computerName)).HostName\`) DO (
    SET var=%%F
)
ECHO %var%
Run Code Online (Sandbox Code Playgroud)

但是此时出现以下错误: ).HostName`) 是意外的。

我知道应该筛选某些内容,因为 cmd 和 powershell 都在解析这一行,但不知道筛选什么以及如何筛选。如何让这个开始工作?

powershell batch windows-command-prompt variables

3
推荐指数
1
解决办法
1万
查看次数

不使用安装向导创建新的 AD LDS 实例?

是否可以安装新的唯一 AD LDS 实例(使用 cmd 或 PowerShell)?我可以在网上找到的所有资源都只需使用 Active Directory 轻型目录服务安装向导。

PowerShell 具有用于处理现有LDS 实例的 Active Directory 模块,但我还没有找到可用于创建 AD LDS 新实例的方法。

scripting powershell active-directory windows-command-prompt ad-lds

3
推荐指数
1
解决办法
3770
查看次数

如何在 Windows cmd 中获取正在使用端口的特定进程的会话下的所有进程

我想列出并终止属于使用端口的特定进程的会话的所有进程。这应该通过 Windows 批处理命令来实现,该命令接受端口号作为输入。

例如:假设进程 PA 当前正在侦听端口 8081。PA 运行在会话 S1 下。有进程 PB 和 PC 与 PA 属于同一会话。PB和PC将运行在不同的端口上(它们运行在哪个端口上并不重要)

Windows 命令/批处理文件应以 8081 作为输入并终止进程 PA、PB 和 PC。

这可能吗?感谢对此的一些帮助,因为我不太熟悉批处理命令/脚本。

我失败的尝试:

(for /F "tokens=2" %%i in (for /f "tokens=5" %a in ('netstat -aon ^| findstr 8081') do tasklist /NH /FI "PID eq %a") do taskkill /NH /FI "SESSIONNAME eq %%i")
Run Code Online (Sandbox Code Playgroud)

windows powershell batch-file batch windows-command-prompt

3
推荐指数
1
解决办法
2493
查看次数

.bat 脚本的奇怪问题

我有一个 .bat 脚本,它安装了 3 个软件。当我打开提升的命令提示符时,浏览到该文件并运行它,一切正常。当我直接运行 .cmd 时(使用 Windows 7 中的“以管理员身份运行”,没有任何反应。任何想法为什么会这样?

脚本如下:

rem 回声关闭

ECHO 正在安装 Bonjour,请稍候!

msiexec.exe /i reqs\Bonjour64.msi /quiet

ECHO 正在安装 DirectX 9.0C Redist ,请稍候

reqs\dxsetup.exe /静默

ECHO 正在安装 Airserver,请稍候。

msiexec.exe /i reqs\AirServer-1.9.1.msi /qn TRANSFORMS=PIDKEY.mst

任何帮助将不胜感激。

windows batch windows-command-prompt

2
推荐指数
1
解决办法
193
查看次数

通过 CMD 设置无限租期

在 Windows Server 2008(R2,32位)上,我找到了以下方法来设置租用期限,例如 3600 秒(1 小时)。

netsh dhcp server scope 10.0.0.0 set optionvalue 51 DWORD 3600 [→ 来源]

这基于RFC 2132,其中optionvalue 51代表“IP 地址租用时间”。可以通过 GUI 将租用期限设置为无限制,但我没有找到通过命令行执行此操作的方法。


问题:如何通过cmd设置无限租期?


在一篇适用于 Windows Server 2003(R2、SP1、SP2)的文章中,我发现了以下内容:

... 从netsh dhcp server mscope>提示符运行set lease TIME... 指定多播[?!] 范围内客户端的租用期限。指定-1会将 IP 地址租用的持续时间设置为无限或无限时间。[ → 来源]

这对我没有多大帮助。

windows-server-2008 windows-command-prompt dhcp-server

2
推荐指数
1
解决办法
1338
查看次数