我见过类似的工具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) 在某些情况下,这是一项简单的任务,但我想向上移动数百个文件夹中的数千个文件。
目录结构是这样的:
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
我写了一个命令行脚本,它列出了我想要做的事情的文件列表,比如压缩、删除或电子邮件。该列表将采用以下格式:
7z-Compression-List.txt:
========================
file1
file2
file3
etc...
Run Code Online (Sandbox Code Playgroud)
对于压缩,我想将列表中的所有行合并为一行。像这样:
文件 1、文件 2、文件 3 等
这样我就可以同时将所有文件输入到 7z 命令行应用程序中。
有谁知道我怎么能做到这一点?也许是某种for循环?
我有一个 .bat 脚本,它从启动专用备份服务器开始,使用 Robocopy 保存生产环境,并在完成后关闭服务器。
它会在保存之前进行一些检查,并在出现问题时请求采取适当的措施,例如,由于断电而未检测到目标 JBOD 案例时。
但是,还有一个警告,到目前为止我无法处理。
如何在 .bat 文件中测试目标磁盘上是否有足够的空间来接收所有文件?(可以测试固定的空间大小,定期修改;目前接近 100 GB。)
甚至有可能吗?如果是这样,我需要研究什么命令?
我使用的是 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
我有一个包含大量子文件夹的文件夹,在这些子文件夹中是压缩文件。
我想知道如何将这些文件解压缩到以 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 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)
错误
Run Code Online (Sandbox Code Playgroud)INFO: Could not find files for the given pattern(s).
我对此进行了一些故障排除并进行了一些快速研究,但找不到简单的答案。由于我没有问过很多关于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) 我运行此命令以获取组名称:
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"
我有一个 PID,我正在尝试确定进程的当前工作目录是什么。我玩了wmic process一段时间,但似乎没有可用的 cwd。有人知道我可以完成此任务的聪明方法吗?
如何将环境变量设置为 Windows 批处理文件中的命令输出?该命令将返回大约 32 个字符的单个值(例如键入 myfile.txt)。
batch-file ×10
windows ×7
command-line ×6
script ×2
7-zip ×1
7za ×1
batch ×1
clipboard ×1
disk-space ×1
powershell ×1
whitespace ×1