标签: batch-file

XCOPY 无法读取 /EXCLUDE 文件

我正在尝试为要发布源代码的 Unreal Tournament 2004 mod 编写构建脚本批处理文件。此脚本包含对带有 /EXCLUDE 参数的 XCOPY 调用,如下所示:

XCOPY "%ProjectFolder%*" "%BuildFolder%" /S /C /Y /EXCLUDE:"%ProjectFolder%Build\CopyExcludes.cfg"
Run Code Online (Sandbox Code Playgroud)

出于某种原因,该命令告诉我它无法读取 CopyExcludes.cfg 文件。我该如何解决?

在批处理文件中,%ProjectFolder% 是源文件的基本文件夹,包括尾部反斜杠。%BuildFolder% 是 UT2004 文件夹中编译器期望文件所在的子文件夹。我运行批处理文件ECHO ON以查看扩展变量:

C:\UT2004>XCOPY "C:\UT2004\EvenMatch\*" "C:\UT2004\EvenMatchV1" /S /C /Y /EXCLUD
E:"C:\UT2004\EvenMatch\Build\CopyExcludes.cfg"
Datei "C:\UT2004\EvenMatch\Build\CopyExcludes.cfg" kann nicht gelesen werden.

0 Datei(en) kopiert
Run Code Online (Sandbox Code Playgroud)

(不要管命令中明显的换行符,这只是 80 个字符后的 CMD 窗口硬换行文本。)

奇怪的是,我可以将命令放在type "%ProjectFolder%Build\CopyExcludes.cfg"XCOPY 命令之前和之后,它可以正确显示批处理文件中两个位置的文件内容:

C:\UT2004>type "C:\UT2004\EvenMatch\Build\CopyExcludes.cfg"
.svn
.bak
.git
.cfg
#
~

C:\UT2004>XCOPY "C:\UT2004\EvenMatch\*" "C:\UT2004\EvenMatchV1" /S /C /Y /EXCLUD
E:"C:\UT2004\EvenMatch\Build\CopyExcludes.cfg"
Datei "C:\UT2004\EvenMatch\Build\CopyExcludes.cfg" kann nicht gelesen werden.

0 Datei(en) kopiert …
Run Code Online (Sandbox Code Playgroud)

windows-7 environment-variables xcopy batch-file

9
推荐指数
1
解决办法
7161
查看次数

命令行返回图像属性

我正在尝试返回一个文本文件,其中包含有关文件夹及其子文件夹中图像文件的一些详细信息。具体来说:

  • 文件路径
  • 图片扩展
  • 图片尺寸
  • 拍摄日期
  • 相机型号

这些属性可能并非对每个图像都可用 - 我不确定这是否会成为问题。

获取文件列表很好;DIR C:\[...]\FOLDER\*.* /S| (我认为)。这是我不确定的下一部分;我在其他操作系统上找到了信息,我也听说过WMIC建议。我尝试将其与单个文件的测试一起使用:

wmic datafile where Name="C:\[...]\IMG_5443.JPG" get Name,FileType > "C:\[...]\info.txt"
Run Code Online (Sandbox Code Playgroud)

但它返回Error: Invalid query所以我猜 WMIC 不适用于图像,或者至少某些参数需要更改。

我还注意到,当我输入wmic datafile get/?该维度时,未将其列为可用属性之一。这就是我所知道的故障排除方法。

那么有没有办法使用命令行在 Windows 中返回图像文件(或文件列表)的属性。如果没有,我愿意接受任何不需要安装额外软件的东西。有什么建议?

command-line batch-file windows-10

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

Windows 批处理等效于 bash 的 set -e

是否有相当于 bash 的 Windows 批处理set -e,如果命令以非零退出状态失败(除了在if语句中预期的地方),它会导致 shell 立即退出?if errorlevel 1 exit 1在每一行之后我都会很累。

windows bash batch-file

8
推荐指数
1
解决办法
1636
查看次数

在特定虚拟桌面中启动程序

当我启动我的笔记本电脑时,我想打开两个程序,A 和 B。我可以使用启动文件夹来做到这一点,但我想在我的第一个桌面中打开 A,在我的第二个桌面中打开 B。这在 Windows 10 中可能吗?也许有批量解决方案?

谢谢

virtual-desktop batch-file windows-10

8
推荐指数
1
解决办法
3346
查看次数

如何判断我的批处理文件是否正在运行?

我有一个从 AT 命令运行的批处理脚本,并且可能会多次运行。当它启动时,我需要它检测它是否已经在运行,如果是,立即退出(第二个)。

  1. 它必须健壮,并处理脚本意外退出(即,我无法在进入时设置标志并在退出时清除它)
  2. 它必须在远程桌面会话中运行
  3. 我一直在使用 Powershell v2 的 XP,但如果我不能在批处理/powershell 或 vbs 中执行,请不要介意编写一个小 exe
  4. 脚本必须最小化运行,所以我用 Start "NAME" /MIN %COMSPEC% /C "MyScript.bat" 启动它
  5. 其他 cmd 窗口可能已打开,因此我需要检查正在运行的脚本
  6. 批处理脚本以 SYSTEM 用户身份运行,但我无法使用任何 WMI

我正在使用 PowerShell Get-Process 查看 MainWindowTitle,但是当远程连接到计算机时这不起作用,因为脚本可能正在运行,但未显示在此远程连接实例中。在这种情况下,Get-Process 可以看到 cmd 进程,但 MainWindowTitle 是空白的。

我试过 Get-Process 并查看了扩展的 StartInfo.EnvironmentVariables 属性,但看不到如何创建 env var 以便它出现在属性中。

我想过在启动命令中使用/WAIT,然后AT会一直打开直到它完成,但是包含AT的脚本没有被最小化

有任何想法吗?

windows powershell vbscript batch-file

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

使用批处理文件操作停止计划任务不会停止在批处理文件中运行的程序

我有几个计划任务,每个任务都执行一个(不同的)批处理文件。每个批处理文件调用同一个程序,使用单独的命令行参数。如果我在运行时停止任务,批处理文件中的程序仍会运行。(批处理文件是一个单行文件,只执行程序。)

当我停止调用批处理文件的任务时,如何强制从批处理文件启动的程序强制退出?

作为一种解决方法,我在正在运行的进程中查找任务,并通过进程 id 杀死它。我想要一个从任务计划程序管理的更干净的解决方案。

windows command-line batch-file windows-task-scheduler

8
推荐指数
1
解决办法
3220
查看次数

了解在批处理中使用参数执行 powershell

我已经研究了一段时间,但我不明白这是如何工作的。我需要的是:

  1. 能够运行批处理文件
  2. 批处理文件应该有参数
  3. 参数应从批处理文件传递到同一文件中的 PowerShell 脚本

为什么我需要这个?因为我需要运行一个简单的批处理文件来做一些事情,但我需要只能在 PowerShell 中工作的高级功能。具体来说:我需要SaveFileDialog一些应用程序。

以下是我现在所拥有的,在那里我剥离了SaveFileDialog.

<# : 

@echo off
setlocal

powershell -noprofile "iex (${%~f0} | out-string)"
goto :EOF

#>

Write-Host "Hello, I'm PowerShell!"
Run Code Online (Sandbox Code Playgroud)

如果我把所有这些都放在一个批处理文件中,比如说,myfile.bat. 它运行并调用 PowerShell 并写入该消息。

我的问题/请求:如何运行myfile.bat param1 param2 param3,并将这些参数/参数传递给我的 PowerShell 脚本?我真的很感激一个最小的例子,它只是通过 powershell 的write-host.

请随时询问更多详情。谢谢!

windows powershell command-line command-line-arguments batch-file

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

Robocopy 不复制子目录中的文件

无论出于何种原因,我都遇到了 robocopy 问题。

我有几个我每天使用的脚本,它们利用 copy、xcopy 和 robocopy,它们目前都在工作,除了这个。我正在使用我在其他脚本中使用的相同的标准开关。

robocopy "K:\Some Folder" "H:\Files\1" /e /w:0 /r:2 /MIR
Run Code Online (Sandbox Code Playgroud)

直接K:\Some Folder复制任何文件。但在任何文件,说K:\Some Folder\Some Subfolder千万不能被复制。我查了一下,使用 /s 或 /e 也应该复制子目录中的所有文件。为什么不是?如果我暂停脚本,它会在某些地方显示“*额外文件”——这可能与它有关。

以前我是用这些开关的,但是简化后还是不行:

 /e /w:0 /r:2 /XO /NFL /NDL /NJH /NJS /nc /ns /np
Run Code Online (Sandbox Code Playgroud)

robocopy batch-file

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

如何强制应用程序使用特定的网卡?

假设我有多个网卡,每个网卡都连接到不同的路由器和 ISP。

如何强制应用程序使用特定连接?当我启用 Windows 10 中的所有连接时,所有应用程序都将连接到第一个启用的应用程序

有没有软件可以做到这一点?或者也许是一个批处理文件?

我也有卡巴斯基安全软件,但在其中找不到这样的选项。

networking windows batch-file windows-10

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

比较两个文件夹并输出两个文件夹中丢失的文件

我想比较两个文件夹,严格来说是文件名。(不是文件内容)。我在 Windows 10 上,想使用命令行工具。

这是可以解释问题的场景。

Folders
-------
source                  source2 
   - file_1                 - file_1
   - file_2                 - file_2
   - file_3                 - file_4
   - file_5                 - file_5
   - file_6                 - file_7


Output should be:
-----------------
Source  -> Missing files file_4  
Source2 -> Missing files file_3  
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,有很多diff工具,但我对比较文件内容不感兴趣。我想要的只是比较两个文件夹并输出两个文件夹中缺少哪些文件(与另一个文件夹相比)。

我不喜欢使用 Powershell。

谢谢你。

command-line batch-file cmd.exe windows-10

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