标签: batch-file

如何在 Windows 下将程序输出通过管道传输到屏幕和文件

我有一个需要实时检查的命令(即在命令提示符MyProgram.exe 中查看其输出)并有一个日志文件供以后检查(MyProgram.exe > log.txt



如何使程序的单个实例写入两个输出?

windows command-line-interface batch-file

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

Windows 2003 批处理文件睡眠/等待功能

可能的重复:
如何在批处理文件中休眠?

我有一个批处理文件,它作为 Windows Server 2003 中的计划任务运行。

这个批处理文件一个接一个地调用了大约 20 个其他的批处理文件。

当它运行时,它会在服务器上造成相当大的峰值并降低性能。

我希望能够在我的每个批处理文件调用之间添加 WAIT 或 SLEEP 类型的命令,以便稍微分散负载。

任何人都可以阐明这样做的最简单方法吗?

windows batch-file pause

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

Windows Server 2008 - 从 .CMD 调用 FTP - 将参数传递给 FTP 文件?

我从 .cmd 文件调用以下内容:

 ftp -d -s:D:\backup\web-daily.txt
Run Code Online (Sandbox Code Playgroud)

web-daily.txt 文件是一个 ftp 输入文件,内容与此类似:

open <server>
<login>
<password>
put d:\backup\web-daily.7z web-daily.7z
quit
Run Code Online (Sandbox Code Playgroud)

我需要能够将当前日期传递给 ftp 输入文件。这是否可行而无需执行实际修改 web-daily.txt 的程序?这是因为 web-daily.7z 实际上是 web-daily_%date:~10,4% %date:~4,2% %date:~7,2%.7z(或 web-daily_yyyy_MM_dd.7z)。

如果可能,我想将此日期作为参数传递。

windows windows-server-2008 ftp batch-file windows-command-prompt

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

如何为整个驱动器恢复 Windows 中文件的压缩属性

我工作中的某个人(系统管理员)实际上在 WinXP 上执行了“清理”任务,同时使用 Windows 压缩文件属性压缩了我硬盘上的所有文件(文件名在 Windows 资源管理器中变蓝)

我实际上并不需要压缩我的文件,而且我认为这也会影响我 PC 的性能。

我尝试搜索文件,使用 Windows 资源管理器选择它们并取消选中复选框以解压缩它们,但是仅仅获得 160,000 个文件的“属性”窗口是不可能的。

有人对此有想法吗?一个 .bat 文件来完成这项工作?

files compression windows-xp cleanup batch-file

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

如何在windows bat中获取某些适配器的默认网关?

请参阅以下 Windows 中的 ipconfig 输出。

C:>ipconfig

Windows IP Configuration


Ethernet adapter Local Area Connection 11:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::4149:4c25:692d:dfec%91
   IPv4 Address. . . . . . . . . . . : 10.252.26.84
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Wireless LAN adapter Wireless Network Connection 15:

   Media State …
Run Code Online (Sandbox Code Playgroud)

networking windows command-line-interface batch-file ipconfig

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

尽管以具有访问权限的用户身份运行,Windows 任务计划程序仍无法访问 EFS 加密文件夹

我有一个批处理文件设置为通过 Windows Server 2008 R2 中的任务计划程序运行。批处理文件用于旋转和压缩 MySQL 日志,包含这些日志的文件夹使用 Windows 内置的 EFS 加密进行加密。我找到了一个 VBS 脚本,它可以压缩(zip)一个文件夹,我用它来压缩旋转后的旧日志文件。如果我在命令行运行它,批处理文件运行良好。

问题是当我尝试让任务调度程序运行它时。我将它设置为每天运行一次,并以我自己的身份运行(我有权访问并可以查看加密的日志文件等)。但是当任务运行时(在预定时间或如果我手动运行任务)它在运行 VBS 脚本时会窒息,说它是未经授权的。当批处理文件调用 CScript 运行 VBS 脚本时,CScript 是否以同一用户(我自己)身份运行?我只是从批处理文件中调用它,如下所示:

CScript  zipIt.vbs  %TEMPDIR%  %ARCHIVEDIR%\%TARGETZIP%
Run Code Online (Sandbox Code Playgroud)

以下是 VBS 脚本的内容:

Set objArgs = WScript.Arguments
InputFolder = objArgs(0)
ZipFile = objArgs(1)
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar)
Set objShell = CreateObject("Shell.Application")
Set source = objShell.NameSpace(InputFolder).Items
objShell.NameSpace(ZipFile).CopyHere(source)
wScript.Sleep 2000
Run Code Online (Sandbox Code Playgroud)

我一般对 VBS 或 Windows 管理不是很了解,但我猜这个脚本在加密文件夹中创建新文件时遇到问题。因为当我关闭文件夹加密时,它可以从任务计划程序正常工作。我想用我自己的凭据使用“Runas”调用 CScript,但我不希望我的密码以明文形式存储在批处理文件中,因为其他用户可以访问这些文件(DatabaseAdmin 等)。在任务计划程序中,有一个“以最高权限运行”的选项。这会解决问题吗?我一直在避免这种情况,因为我想我应该设法弄清楚如何让它以尽可能少的权限工作。

更新:在四处闲逛时,我发现我实际上没有能力解密 MySQL 日志文件,即使我确实具有包含文件夹的能力(由 cipher.exe /c 验证)。唯一具有 unencrypt 权限的帐户是 SYSTEM。这可能是因为 MySQL 日志是由工具“MySQLAdmin flush-logs”创建的。据我了解,应用程序创建的文件归 SYSTEM …

windows-server-2008 batch-file vbscript encrypting-file-system user-permissions

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

由 Start-Process Cmdlet 调用时,批处理脚本未执行

我在这里的 Windows Server 2012 R2 上有一个奇怪的问题,对我来说根本没有任何意义。

我有一个 PowerShell 脚本,它基本上具有以下结构:

Function Something-Different
{
    [...]
}

Function Start-Some-Batch
{
    Start-Process "K:\Path\To\Batch.cmd" 
}

Function Something-Else
{
    [...]
}

Something-Different
Start-Some-Batch
Something-Else
Run Code Online (Sandbox Code Playgroud)

但是批处理文件K:\Path\To\Batch.cmd永远不会被执行!

更多信息和事实:

  • 所有操作均由同一域用户执行
  • PowerShell 版本为 4.0
  • 在 Windows 资源管理器中双击批处理文件可以毫无问题地执行它
  • PowerShell 脚本不提供任何错误输出
  • 执行Start-Process "K:\Path\To\Batch.cmd"直接从PowerShell控制台的确也没有提供任何输出也不踢批处理脚本
  • $error[0] 执行后为空
  • 该函数Something-Else执行得很好(这意味着Start-Some-Batch不会阻止 PS 脚本完成其执行)
  • 运行提升的 PowerShell 脚本不会改变任何事情
  • 从 cmd.exe 提示符调用批处理脚本也不会启动它(提升与否)
  • 我怀疑Security Settings通过组策略来的一百个中的任何一个

什么会导致这种奇怪的行为?我在这里没有想法了。

powershell batch-file windows-server-2012-r2

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

如何查询任务管理器

我知道tasklistWindows 中的命令会给出任务名称及其 PID 的列表。还有另一个命令WMIC path win32_process get Commandline确实提供了更详细的信息,但它的输出更加混乱,有时无法预测(因此很难针对它编写模式/正则表达式,尤其是findstr在 MSDOS 中!)

所以,我想知道在 Windows 中,有没有办法直接查询任务管理器来查找图像名称和它的命令行部分?我想如果任务管理器本身可以找到这些信息,那么一定有办法。

我非常希望在批处理脚本中完成此操作,但是如果需要使用更复杂的东西(例如使用 .NET 或 VB),那么示例会很棒!

任务管理器示例

windows windows-7 .net batch-file vbscript

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

使用 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万
查看次数

如何使用批处理文件卸载软件

我想通过调用bat文件来卸载软件。它必须是自动的,在卸载过程中无需输入任何参数。如何制作可以按名称卸载软件的bat文件?

PS:我知道使用 WMI 的完美方法,但它需要用户输入:

WMIC
product where name="software" call uninstall
Run Code Online (Sandbox Code Playgroud)

windows powershell batch-file uninstall wmi

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