我有一个需要实时检查的命令(即在命令提示符MyProgram.exe 中查看其输出)并有一个日志文件供以后检查(MyProgram.exe > log.txt)
如何使程序的单个实例写入两个输出?
可能的重复:
如何在批处理文件中休眠?
我有一个批处理文件,它作为 Windows Server 2003 中的计划任务运行。
这个批处理文件一个接一个地调用了大约 20 个其他的批处理文件。
当它运行时,它会在服务器上造成相当大的峰值并降低性能。
我希望能够在我的每个批处理文件调用之间添加 WAIT 或 SLEEP 类型的命令,以便稍微分散负载。
任何人都可以阐明这样做的最简单方法吗?
我从 .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
我工作中的某个人(系统管理员)实际上在 WinXP 上执行了“清理”任务,同时使用 Windows 压缩文件属性压缩了我硬盘上的所有文件(文件名在 Windows 资源管理器中变蓝)
我实际上并不需要压缩我的文件,而且我认为这也会影响我 PC 的性能。
我尝试搜索文件,使用 Windows 资源管理器选择它们并取消选中复选框以解压缩它们,但是仅仅获得 160,000 个文件的“属性”窗口是不可能的。
有人对此有想法吗?一个 .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
我有一个批处理文件设置为通过 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
我在这里的 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永远不会被执行!
更多信息和事实:
Start-Process "K:\Path\To\Batch.cmd"直接从PowerShell控制台的确也没有提供任何输出也不踢批处理脚本$error[0] 执行后为空Something-Else执行得很好(这意味着Start-Some-Batch不会阻止 PS 脚本完成其执行)Security Settings通过组策略来的一百个中的任何一个什么会导致这种奇怪的行为?我在这里没有想法了。
我知道tasklistWindows 中的命令会给出任务名称及其 PID 的列表。还有另一个命令WMIC path win32_process get Commandline确实提供了更详细的信息,但它的输出更加混乱,有时无法预测(因此很难针对它编写模式/正则表达式,尤其是findstr在 MSDOS 中!)
所以,我想知道在 Windows 中,有没有办法直接查询任务管理器来查找图像名称和它的命令行部分?我想如果任务管理器本身可以找到这些信息,那么一定有办法。
我非常希望在批处理脚本中完成此操作,但是如果需要使用更复杂的东西(例如使用 .NET 或 VB),那么示例会很棒!

我正在尝试重命名大量文件,以将文件资源管理器中“修改日期”列中的日期合并到 YYYYMMDD 格式的每个文件名中。我能够使用以下步骤从内部所有文件的所需文件夹生成报告:
dir>filename.txt然后我将报告作为带分隔符的文本文件拉入 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
我想通过调用bat文件来卸载软件。它必须是自动的,在卸载过程中无需输入任何参数。如何制作可以按名称卸载软件的bat文件?
PS:我知道使用 WMI 的完美方法,但它需要用户输入:
WMIC
product where name="software" call uninstall
Run Code Online (Sandbox Code Playgroud) batch-file ×10
windows ×6
powershell ×2
vbscript ×2
.net ×1
cleanup ×1
compression ×1
executable ×1
files ×1
ftp ×1
ipconfig ×1
networking ×1
pause ×1
rename ×1
uninstall ×1
windows-7 ×1
windows-xp ×1
wmi ×1