【问题标题】:Copy files to another path using the "send to" function in the context menu使用上下文菜单中的“发送到”功能将文件复制到另一个路径
【发布时间】:2018-12-28 11:55:14
【问题描述】:

我正在尝试为我的日常工作创建一条捷径。我经常需要将一些文件从C:\folder0\folder1\aaaa\ 复制到C:\folder0\folder1\bbbb\

我想在发送至菜单中创建一个批处理文件快捷方式。所以我会先选择文件,然后点击批处理文件的新添加的快捷方式,其余的工作应该完成。

@echo off

:here
if '%1'=='' goto exit
"C:\Program Files (x86)\Notepad++\notepad++.exe" "%1"
echo %cd%
shift
goto here

:exit

我首先打开Notepad++ 中的文件并显示路径。 但我需要一个函数来存储给定文件的路径并将文件夹a 更改为文件夹b。之后它将为标准复制功能采用新路径。

xcopy /s C:\source D:\target

我希望我能正确解释我试图达到的目标。

【问题讨论】:

  • 测试参数是否为空的正确方法是this。另外,你想把文件拖到一个批处理文件中,批处理文件会用Notepad++打开吗?
  • 我认为绝对没有理由为您概述的任务创建批处理文件或脚本。您最需要的是将C:\folder0\folder1\bbbb 添加为Send to 菜单中的新项目。我还建议这也是不必要的,因为您需要做的就是在资源管理器窗口中选择一个或多个项目,然后使用上下文菜单“复制到”您需要的任何位置。您还可以利用两个窗口/选项卡,(取决于您选择的文件管理器),和拖放,(或键序列),在两个已知常量之间复制地点。

标签: batch-file path


【解决方案1】:

我找到了解决方案。这是我的代码,只要路径中没有空格,它现在就可以为我工作(有人想解决这个问题吗?)

@echo off
:here
if '%1'=='' goto exit
set strpath=%cd%
set strresult=%strpath:folder1=folder2%
@echo The original file '%1'
@echo New path %strresult%
coyp /b/v/y "%1" "%strresult%"
shift
goto here
:exit
pause

【讨论】:

  • coyp 更改为copy。如果您引用了路径,请使用"%~1"
  • if '%1'=='' goto exit 替换为if "%~1" == "" goto exit 以使此行也可以使用包含空格或其中一个字符&()[]{}^=;!'+,`~ 的第一个参数字符串,如最后一段帮助中Windows 命令处理器的帮助所解释在命令提示符窗口cmd /? 中运行时的页面输出。那么goto exit 也可以替换为goto :EOFexit /Bexit。请参阅Where does GOTO :EOF return to? EXITcmd.exe 的内部命令,因此exit 作为标签是可能的,但不建议使用。
  • coyp /b/v/y "%1" "%strresult%" 应该是 copy /b /v /y "%~1" "%strresult%" 才能真正起作用。运行copy /?call /? 以获取命令COPY 的帮助以及%~1%1 的对比说明。我还建议阅读 Why is no string output with 'echo %var%' after using 'set var = text' on command line? 并使用 set "strpath=%cd%"set "strresult=%strpath:folder1=folder2%" 让代码也适用于包含 &(与号)的路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 2013-05-29
  • 2011-08-10
相关资源
最近更新 更多