【问题标题】:Batch file to create new folder in current directory with a name from the clipboard批处理文件以在当前目录中使用剪贴板中的名称创建新文件夹
【发布时间】:2014-07-06 21:56:25
【问题描述】:

我目前正在下载大量单独分组的文件。根据主题,每个组都有自己的名称。

目前这就是我正在做的,

  1. 突出显示文本以复制主题名称。
  2. 右键单击我所在的任何目录并创建一个新文件夹。
  3. 粘贴以命名新文件夹。

我要做的是创建一个执行此操作的批处理文件,然后将其添加到我的资源管理器上下文窗口中,并为批处理文件创建一个键盘快捷键。

就像主题说的我想:

创建一个批处理文件,它将在我正在工作的当前目录中创建一个新文件夹。文件夹的名称应该来自剪贴板。

这对我来说是新的,但我目前了解

mkdir 用于新文件夹 我相信%clipboard% 用于剪贴板 %cd% 代表当前目录。

【问题讨论】:

  • 我不相信您可以从批处理文件访问剪贴板。您有两个选择:1)解析包含批处理文件中文件夹名称的文本文件并以这种方式创建文件夹; 2) 使用 Powershell,您可以在其中访问剪贴板。警告:剪贴板是一个全局的单实例系统资源。如果您在 Powershell 脚本运行时剪切/复制任何内容,您可以替换脚本放在剪贴板上的任何内容。 HTH。

标签: batch-file directory clipboard


【解决方案1】:

有第三方免费工具可以读取剪贴板 - 但资源管理器窗口中的当前目录不会以我所知道的任何方式公开 - 这意味着您无法以编程方式在您正在操作的同一位置创建文件夹它在资源管理器窗口中。

但是,您可以使用免费的autohotkey 按键、单击并通过简单的热键复制到剪贴板、粘贴等。

【讨论】:

    【解决方案2】:

    对于上下文菜单集成,superuser.com 可能是一个更好的地方

    用于从剪贴板创建文件夹

    @echo off
        setlocal enableextensions disabledelayedexpansion
    
        :: Where to create the folder should come from contextual menu as parameter
        if "%~1"=="" exit /b 1
        if not exist "%~1" exit /b 1
    
        :: 1 retrieve name from clipboard (if the clipboard contains text)
        :: 2 ensure the target folder path ends with a backslash
        :: 3 create the folder
    
        for /f "usebackq delims=" %%a in (
            `mshta "javascript:var data;try{data=window.clipboardData.getData('Text');}catch(e){};new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(data?data:'');close();"`
        ) do for /d %%b in ("%~f1\") do (
            if not exist "%%~fb%%a" (
                md "%%~fb%%a"
            ) else (
                echo(%%~fb%%a exists
                pause
            )
        )
    

    这使用mshta.exe(它是windows 的一部分)使用javascript 代码从剪贴板中检索数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      相关资源
      最近更新 更多