标签: batch-file

用于将剪贴板移动到文件的 Windows 实用程序/工具命令行

我见过类似的工具CLIP,但它适用于剪贴板,而不是另一个方向。

我看到过对“粘贴”的引用,但这似乎不是 Windows 的一部分。我需要找到适用于标准 Windows 7、8 和 10 环境的解决方案。

Clip是分布式的。有人有可以从剪贴板到文件的工具吗?

似乎可以使用 PowerShell 命令来完成。

我刚刚编写的这个 C# 程序执行了我使用 PowerShell 执行的操作:

class Clip2File
{
    [STAThread()]
    static void Main(string[] args)
    {
        var fileName = @"c:\demo.png";
        if (args.Length != 0){
            fileName = args[0];
        }
        if (!Clipboard.ContainsImage()) return;
        Image img = Clipboard.GetImage();
        img?.Save(fileName, ImageFormat.Png);
    }
}
Run Code Online (Sandbox Code Playgroud)

windows clipboard powershell command-line batch-file

7
推荐指数
2
解决办法
9193
查看次数

将文件夹的内容批量上移一级

在某些情况下,这是一项简单的任务,但我想向上移动数百个文件夹中的数千个文件。

目录结构是这样的:

C:\Photos\subject\randomnumbers\images\file.ext

我想以:

C:\Photos\subject\randomnumbers\file.ext

我试过跑步,for /r %i in ("*\images\*.*") do move *\*.*但没有按预期工作。

除了手动执行此操作之外,我想不出其他方法来执行此操作。虽然手动执行它会起作用,但我可以从我可以根据需要开始的自动化操作中受益匪浅。

这是可能的,任何人都可以帮助我吗?

windows windows-explorer command-line batch-file file-organization

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

通过 Windows 命令行将文本文件的所有行合并为一行

我写了一个命令行脚本,它列出了我想要做的事情的文件列表,比如压缩、删除或电子邮件。该列表将采用以下格式:

7z-Compression-List.txt:
========================

file1
file2
file3
etc...
Run Code Online (Sandbox Code Playgroud)

对于压缩,我想将列表中的所有行合并为一行。像这样:

文件 1、文件 2、文件 3 等

这样我就可以同时将所有文件输入到 7z 命令行应用程序中。

有谁知道我怎么能做到这一点?也许是某种for循环?

script command-line text-formatting batch-file

7
推荐指数
1
解决办法
5704
查看次数

在 .bat 文件中,如何测试可用磁盘空间?

我有一个 .bat 脚本,它从启动专用备份服务器开始,使用 Robocopy 保存生产环境,并在完成后关闭服务器。

它会在保存之前进行一些检查,并在出现问题时请求采取适当的措施,例如,由于断电而未检测到目标 JBOD 案例时。

但是,还有一个警告,到目前为止我无法处理。

如何在 .bat 文件中测试目标磁盘上是否有足够的空间来接收所有文件?(可以测试固定的空间大小,定期修改;目前接近 100 GB。)

甚至有可能吗?如果是这样,我需要研究什么命令?

windows disk-space batch-file

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

在 BAT 文件中展开“%~dp0”后出现意外的重复目录名

我使用的是 Windows 10 Enterprise x64。我有以下目录层次结构,最内层有一个 BAT 文件:

C:\
  dir\
    my files\
      run.bat
Run Code Online (Sandbox Code Playgroud)

BAT 文件包含以下几行:

@pushd %~dp0
@echo %~dp0
@popd
Run Code Online (Sandbox Code Playgroud)

%~dp0帮助主题for /?本答案中解释了 的含义和用法)

如果我从当前目录为 的命令提示符运行 BAT 文件C:\dir\my files,那么我会得到一个非常合理的结果:

C:\dir\my files>run.bat
C:\dir\my files\
Run Code Online (Sandbox Code Playgroud)

但是如果我从父目录调用它C:\dir,我会得到:

C:\dir>"my files"\run.bat
C:\dir\my files\my files"\
Run Code Online (Sandbox Code Playgroud)

嗯?请注意,最里面的目录名称是重复的,并且"\末尾有一些杂散字符。让我们以不同的方式尝试一下:

C:\dir>"my files\run.bat"
C:\dir\my files\my files\
Run Code Online (Sandbox Code Playgroud)

杂散字符消失了,但目录名称仍然重复。对此有何解释?如何修改 BAT 文件,以便无论从哪个目录调用它都提供相同的输出?

当然,我的真实场景比这个简化版还要复杂。的值%~dp0与其他字符串连接,分配给环境变量,作为参数传递给其他脚本等。

windows command-line environment-variables whitespace batch-file

7
推荐指数
1
解决办法
4732
查看次数

批量解压子目录下的所有zip压缩包;每个存档的内容提取到以存档命名的新目录中

我有一个包含大量子文件夹的文件夹,在这些子文件夹中是压缩文件。

我想知道如何将这些文件解压缩到以 zip 文件命名的文件夹中,例如:

C:\Archives\Photos\A.zip
C:\Archives\Videos\B.zip
C:\Archives\Documents\C.zip
Run Code Online (Sandbox Code Playgroud)

会变成

C:\Archives\Photos\A\
C:\Archives\Videos\B\
C:\Archives\Documents\C\
Run Code Online (Sandbox Code Playgroud)

我目前可以执行此操作,但前提是我一次执行一个文件夹,我想知道是否有办法一次完成所有操作,我在想一个 .bat 文件。

batch-file 7-zip 7za

7
推荐指数
1
解决办法
8319
查看次数

批处理脚本 - 带括号的“Where”这个词的回声问题

不久前,我询问了Batch Script Redirection Syntax,并得到了很好的回答。我在批处理脚本中()更频繁地使用括号方法echo并重定向到文件等。

我遇到了一个奇怪的问题,它似乎Where无法将echo单词从字面上理解为该单词,而且它似乎Where被解释为正在调用的命令。


为了让这个例子简单,我将脚本逻辑简化为一个更简单的版本,但PowerShell逻辑echo可能比这复杂得多。

脚本示例

@ECHO ON

(
    ECHO [System.IO.DriveInfo]::GetDrives() ^| Where {$_.Name -like "C:\"}
)>> Outfile.txt

PAUSE
Run Code Online (Sandbox Code Playgroud)

错误

INFO: Could not find files for the given pattern(s).
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


我所做的

我对此进行了一些故障排除并进行了一些快速研究,但找不到简单的答案。由于我没有问过很多关于SuperUser 的问题,我认为这可能是一个很好的问题。

我特别尝试的一件事是将变量设置为Where(ie SET w=Where)的字符串值,然后在括号中的echo命令中我引用了该变量 (ie %w%) 来代替单词,Where但结果仍然是相同的错误。

我也玩了一点,SETLOCAL ENABLEDELAYEDEXPANSION但没什么区别。

@ECHO ON
SET w=Where
(
    ECHO [System.IO.DriveInfo]::GetDrives() ^| %w% {$_.Name -like …
Run Code Online (Sandbox Code Playgroud)

batch-file

7
推荐指数
1
解决办法
308
查看次数

获取 CMD 命令的输出并将其设置为批处理变量

我运行此命令以获取组名称:

set "remotegroup="
     for /f "skip=1delims=" %%a in (
     '"wmic group where sid="S-1-5-32-555" get name"'
     ) do if not defined remotegroup set "remotegroup=%%a"
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时echo "%rdpgroup%",输出是这样的:

"Remote Desktop Users  "
Run Code Online (Sandbox Code Playgroud)

我不想要用户末尾的那些空间。只想要这样的输出:"Remote Desktop Users"

windows batch command-line batch-file

7
推荐指数
1
解决办法
8389
查看次数

获取另一个进程的当前工作目录

我有一个 PID,我正在尝试确定进程的当前工作目录是什么。我玩了wmic process一段时间,但似乎没有可用的 cwd。有人知道我可以完成此任务的聪明方法吗?

windows command-line batch-file

7
推荐指数
1
解决办法
2586
查看次数

如何将环境变量的值设置为 WINdows 批处理文件中的命令输出?

如何将环境变量设置为 Windows 批处理文件中的命令输出?该命令将返回大约 32 个字符的单个值(例如键入 myfile.txt)。

windows script batch-file

7
推荐指数
2
解决办法
2507
查看次数