标签: windows-command-prompt

从 CMD.EXE 在 32 位和 64 位版本的 Vista/Windows 7 中查找应用程序的正确技术

背景

我有一个可以正常工作的现有 CMD 脚本。它从程序文件中启动一个应用程序,就像这样

"%PROGRAMFILES%\MyApp\app.exe" 
Run Code Online (Sandbox Code Playgroud)

问题

  • 它在 32 位版本的 Windows(Vista、Windows 7)上运行良好
  • 但在 64 位版本的 Windows 上,该应用程序将安装到“Program Files (x86)”而不是“Program Files”(这是在 32 位操作系统上发生的情况)

我在寻找什么

  • 一个可以稳健地处理这两种情况的脚本(即它“做正确的事情”取决于它所在的操作系统)
  • 一种仅使用 CMD.EXE 中的那些功能的方法。我对使用 Powershell 等的解决方案好奇,但那些对我没有帮助 - Powershell 不会在这个脚本将运行的机器上。

windows 64-bit batch-file windows-command-prompt

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

Win7 命令处理器 (CMD.EXE) 真的很慢

在其他人看来,Windows 7 命令处理器 (CMD.EXE) 的启动速度真的很慢吗?

我从命令行运行了这个测试(ntimer 是 Windows 服务器资源工具包中的一个计时实用程序,如果您没有安装它,您可以将其省略):

ntimer cmd /c for /l %a in (1,1,100) do @cmd /c rem

它所做的只是对新的 CMD.EXE 进行 100 次炮击。在我的 x64 Win7 基本系统上运行大约需要 2.3 秒。在 x86 Win7 虚拟机中运行它大约需要 5.6 秒。有趣的是,在使用旧的 16 位命令处理器 COMMAND.COM 的 VM 中,同样的测试耗时不到 1 秒。

为什么 CMD.EXE 这么慢?我期望性能类似于我在 VM 中使用 COMMAND.COM 看到的性能。原始机器和虚拟机之间 CMD.EXE 的速度比似乎合理,但绝对速度很慢。有没有人对此有任何想法?谢谢!

我注意到这一点是因为我正在构建软件,执行时间从旧 XP VM 中的 15 分钟变为新 Win7 VM 中的 30 分钟。构建过程使用 GNUMAKE 实用程序,并对命令处理器进行大量炮击。

PS我最初在stackoverflow.com上问过这个问题,但他们建议我去这里。

performance windows-7 windows-command-prompt

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

Windows:如何从命令行将程序添加到系统的路径环境变量中?

我希望将目录永久添加到%PATH%大量 Windows 机器上可用的环境中。有什么方法可以从命令行 ( cmd)执行此操作,以便我可以编写解决方案的脚本,而不必在数十台服务器上使用 GUI。

我怎样才能做到这一点?

windows command-line-interface environment-variables windows-command-prompt path

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

如何通过 powershell 或命令提示符启动 SMTP virtualhost [SMTP Virtual Server #1]

由于我的服务器上出现了一些错误,我的SMTP服务[SMTP Virtual Server #1]停止了。我想创建将定期运行以检查SMTP服务器状态的作业,如果它停止,则脚本将再次启动它。

我用过,Start-Service "SMTPSVC"但它只启动UATSERV服务而不是[SMTP Virtual Server #1]虚拟主机(请看附件)。

服务启动后如何启动虚拟服务器?

我的管理团队正在处理这个问题。我想同时使用这个临时解决方案。

任何帮助表示赞赏... :)

SMTP 虚拟主机映像

windows powershell smtp windows-command-prompt virtualhost

6
推荐指数
1
解决办法
6982
查看次数

是否有 cmd/certutils 将证书从一个商店复制到另一个商店?

我想知道是否有一个 cmd 可以将现有证书从一个商店复制到另一个商店。我正在尝试将证书从用户中间证书颁发机构存储 (certutils -user -store ca fqdn-HOST-CA) 复制到机器的受信任根证书颁发机构存储 (certutils -store root fqdn-HOST-CA)。我尝试将 cmds 与 -addstore 一起使用,但没有用!!

certutil.exe -addstore root | certutil.exe -store -user ca fqdn-HOST-CA
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

powershell windows-7 batch windows-command-prompt certificate-authority

6
推荐指数
1
解决办法
3301
查看次数

Windows PowerShell - 如何查看命令历史日期/时间

我想列出在 Windows PowerShell 中输入的命令及其各自的时间戳。我怎样才能用Get-History命令做到这一点?

windows powershell windows-command-prompt command

6
推荐指数
1
解决办法
5755
查看次数

Windows:“查询用户”命令报告的空闲时间不准确(误报)

我正在与其他十个系统管理员一起工作,他们有时会忘记注销服务器(甚至锁定它们)。两天或更长时间以来,我一直试图想出一个“脚本”来检查我们管理的每台服务器是否有空闲的管理员帐户。如果它们闲置超过两天,我打算将它们注销(而不是锁定它们)。

如果我可以依靠命令“查询用户”,这将是一个完成的项目。但不幸的是,我似乎不能依赖该命令。以下是随机服务器的一些示例输出:

 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
 techyellow            console             4  Active      none   1/18/2017 10:35 AM
Run Code Online (Sandbox Code Playgroud)

TechYellow 从 2017 年 1月 19 日开始休假 - 现在已经闲置了近四天。如果我启动 VNC 会话,我可以看到 - 就像白天一样 - Windows 已登录,我可以使用 TechYellow 的帐户做任何我想做的事情;它甚至没有被锁定。然而,我的查询认为 TechYellow 是Active。我已经确认即使帐户被锁定也是如此 - 它仍然经常报告活动。这只是一个示例 - 我一直在多台服务器上测试此命令,我发现对于各种不同的管理员帐户,它提供错误结果的频率高于正确结果。

有更好的替代Query User吗?我看了高低,但我发现的一切都回到了类似的命令,这些命令都报告错误。

我只是想看看管理员是否已登录并且闲置了两天或更长时间。就是这样!过去有人征服过这个吗?

batch-file windows-command-prompt

6
推荐指数
0
解决办法
2317
查看次数

使用CMD检查共享文件夹是否存在

如何使用批处理脚本检查共享的网络文件夹是否存在?

示例:\\10.10.10.1\folder1\folder2\shared_folder

network-share batch windows-command-prompt

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

使用 Windows CMD 或简单的 .TXT 重命名文件以将修改日期添加到文件名

我正在尝试重命名大量文件,以将文件资源管理器中“修改日期”列中的日期合并到 YYYYMMDD 格式的每个文件名中。我能够使用以下步骤从内部所有文件的所需文件夹生成报告:

  1. 单击提示和技巧文件夹
  2. 按住 Shift 键并右键单击 Tips and Tricks 文件夹
  3. 单击“在此处打开命令窗口”
  4. 类型 dir>filename.txt
  5. 点击进入
  6. 打开 Tips and Tricks 文件夹并查找具有您创建的文件名的文本文件

然后我将报告作为带分隔符的文本文件拉入 Excel 并处理内容,因此我现在在一列中有“最后修改”日期,在另一列中有文件名:

修改日期| 文档名称

1/9/2009 | ArcGIS_TT_Projections_Transformations.doc

2/18/2014 | ArcGIS_TT_Re-Projection_WMAS.docx

1/9/2009 | ArcGIS_TT_Set_Selectable_Layers.doc

1/9/2009 | ArcGIS_TT_Spatial_Join.doc

2010/4/21 | ArcGIS_TT_View_CLU_History_Layer.doc

我只成功使用了如下重命名脚本:

@echo off
setlocal enableDelayedExpansion
for %%F in ("ArcGIS_TT_Projections_Transformations*.txt") do (
  set "name=%%F"
  ren "!name!" "!name:ArcGIS_TT_Projections_Transformations=ArcGIS_TT_Projections_Transformations_20090109!"
)
pause
Run Code Online (Sandbox Code Playgroud)

但我试图避免对 61 个文件重复该过程。有没有人建议使用 Windows CMD 提示或一个简单的 .txt,我可以用它来更自动地将日期修改信息提取到文件名中?

谢谢你的帮助!

rename batch-file windows-command-prompt executable date-modified

5
推荐指数
2
解决办法
4万
查看次数

当凭据作为参数传递时,NET USE 命令不会进行身份验证

我正在尝试通过使用NET USE命令将其映射为驱动器来连接到远程 WebDAV 服务器。

NET USE * <domain> /user:<username> <password>
Run Code Online (Sandbox Code Playgroud)

执行此命令会出现以下错误:

发生系统错误 1244。

由于用户尚未通过身份验证,因此未执行所请求的操作。

但是当我执行时

NET USE * <domain>
Run Code Online (Sandbox Code Playgroud)

它要求输入用户名,然后输入密码。

Enter the user name for <domain>: 
Enter the password for <domain>:
Run Code Online (Sandbox Code Playgroud)

输入后,我现在可以连接到远程位置并映射驱动器。

是什么导致了这个错误?我该如何解决?

这些命令将自动执行,因此我想将凭据作为参数传递,而不是在出现提示时输入。

windows network-share webdav windows-command-prompt net-use

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