【问题标题】:Batch file Copy using %1 for drag and drop使用 %1 进行拖放的批处理文件复制
【发布时间】:2013-01-25 01:09:45
【问题描述】:

我尝试制作一个拖放批处理文件。

我有一个文件存在但批处理文件找不到它的问题...

我想将.png 文件(如pict_2013020808172137243.png)复制到另一个文件夹并重命名。

路径中有_和空格之类的符号,我也不知道如何进行多次拖放以实现相同的功能(重命名并添加到.zip)。

我试过了,但没有结果:(

@ECHO OFF
ECHO %1
COPY "%1" "%CD%\test\" /Y /S 
REN "%CD%\mob\*.png" "%CD%\test\test.png"
7za u -tzip "%appdata%\.virto\pack.zip" "test" -r

【问题讨论】:

    标签: batch-file parameters path drag-and-drop copy


    【解决方案1】:

    批处理文件的拖放操作很糟糕。
    如果存在空格,则会引用名称,但如果找到特殊字符,则不会引用,例如 &,;^

    对于仅文件名中的空格,您只需稍微更改代码。

    @ECHO OFF
    ECHO "%~1"
    COPY "%~1" "%CD%\test\" /Y /S 
    MOVE "%CD%\mob\*.png" "%CD%\test\test.png"
    7za u -tzip "%appdata%\.virto\pack.zip" "test" -r
    

    %~1 始终扩展为未引用的版本,因此始终可以以安全的方式引用它们。

    "c:\Docs and sets" -> %~1 -> c:\Docs and sets -> "%~1" -> "c:\Docs and sets"
    c:\Programs -> %~1 -> c:\Programs -> "%~1" -> "c:\Programs"
    

    更多详情请阅读Drag and drop batch file for multiple files?

    【讨论】:

    • 谢谢!这对我有很大帮助:)
    • Drag & drop is badly implemented for batch files. -- 我以前读过这个并记住了它,所以我能够找到你的答案。该声明是否同样适用于.bat.cmd?我的意思是如果它是explorer issue,为什么它只是批处理脚本的问题?
    • 我检查了它与.vbs 脚本和.exe 文件一起正常工作(当然.cmd 失败)。确实令人困惑,探索者似乎足够聪明但有时“不愿意”。在您看来,问为什么有意义吗?
    • @Wolf 那是因为只有 cmd.exe 会尝试解释 & 字符。 .exe 和 .vbs 不会尝试解释参数
    • @Wolf 是的,对于资源管理器来说,它们只是文件,但 cmd.exe 将带有 & 的文件解释为命令分隔符。并且资源管理器不知道它应该将这些文件名也用引号括起来。这是浏览器的糟糕设计
    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 2017-11-16
    • 2016-02-26
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多