Batch file 批处理、文件复制和拖放错误

Batch file 批处理、文件复制和拖放错误,batch-file,drag-and-drop,copy-paste,Batch File,Drag And Drop,Copy Paste,我一直在寻找这个问题的答案,但我发现没有任何东西能真正解决我的问题——很抱歉,如果已经有一篇类似于这篇文章的答案,我没有找到 第1章) 我有一个批处理文件,可以将任何文件/文件夹(递归)复制到USB闪存驱动器中的特定文件夹。所以,我写了这个: echo Copying files... xcopy /s /i %1 \folder\Subfolder\%1 如果我从命令行调用批处理文件,结果会很糟糕,但是如果我将对象(文件/文件夹)拖到.bat本身上,它就会停止工作。我确信shell必须返回一

我一直在寻找这个问题的答案,但我发现没有任何东西能真正解决我的问题——很抱歉,如果已经有一篇类似于这篇文章的答案,我没有找到

第1章)
我有一个批处理文件,可以将任何文件/文件夹(递归)复制到USB闪存驱动器中的特定文件夹。所以,我写了这个:

echo Copying files...
xcopy /s /i %1 \folder\Subfolder\%1
如果我从命令行调用批处理文件,结果会很糟糕,但是如果我将对象(文件/文件夹)拖到.bat本身上,它就会停止工作。我确信shell必须返回一条错误消息,但我无法读取它,因为命令行窗口会像往常一样立即关闭(这就是我从命令行运行它的原因)

你能帮我修一下吗

第2章)
我希望批处理文件能够区分两种情况:
a) 正在将文件“C:\Document.doc”复制到“\folder\Subfolder”
b) 正在将文件“C:\SomeFolder”复制到\folder\Subfolder\SomeFolder”

我的代码已经执行了b),它与a)没有区别,当我尝试复制单个文件时,它执行的是: 指令

xcopy /s /i %1 \Folder\SubFolder\%1
变成

xcopy /s /i C:\Document.doc \Folder\SubFolder\C:\Document.doc
而不是

xcopy /s /i C:\Document.doc \Folder\SubFolder\Document.doc
如何使批次能够更正此问题


提前感谢!

%1具有文件的绝对路径,因此当您拖动文件时,您会告诉CMD执行此操作:

xcopy  /S /i "C:\complete path of file\file.ext" "\folder\Subfolder\C:\complete path of file\file.ext"
您需要使用参数获取所需内容(绝对路径、文件名、扩展名、文件大小、所需内容)

像这样:

xcopy /s /i "%~1" "\folder\Subfolder\%~nx1"
这个例子是:

xcopy  /S /i "C:\complete path of file\file.ext" "\folder\Subfolder\filename.ext"
但实际上,您不需要使用第二个参数,您可以简化为:

xcopy /s /i "%~1" "\folder\Subfolder\"

因为默认情况下,destiny文件名与原始文件名相同。

在批处理文件末尾添加一个
暂停将使窗口保持打开状态(以便您可以查看错误)请举例说明在情况a)和b)中你想要更新我的答案吗?我可以解决这个问题,但我不懂,对不起,我的英语。