我在带日期的文件夹(例如20180601、20180602等)的共享目录(源文件夹为F :)中有一组文件。 我的目标文件夹位于本地驱动器中(目标位置为C:)。
我想将选定的文件从源复制到目标。
例如
ID max_date penultimate
1 06.02.2018 05.01.2018
2 03.06.2018 01.06.2018
3 12.12.2017 NULL
....
现在,我要在目标位置手动创建文件夹,并手动复制所选文件,但是我无法对已过时的文件夹进行此操作。
感谢您的帮助。预先感谢。
答案 0 :(得分:2)
这个问题还不清楚,但是我还是尝试回答。
我想将选定的文件从源复制到目标。
我假设在Windows资源管理器中选择了文件,目标是将具有完整路径的所选文件从驱动器F:
复制到驱动器C:
,但替换第一个目录Source
由Destination
。
可以使用以下批处理文件完成此操作:
@echo off
for %%A in (%*) do for /F "tokens=1* delims=\" %%B in ("%%~pA") do %SystemRoot%\System32\xcopy.exe "%%~A" "C:\Destination\%%C" /C /F /G /H /K /R /Y
pause
批处理文件可以存储在任何目录中。为了与Windows资源管理器中的选定文件一起运行,必须在用户帐户的SendTo
文件夹中创建一个快捷方式文件(* .lnk)。
SendTo
文件夹在Windows XP上是文件夹%USERPROFILE%\SendTo
,在Windows Vista和更高版本的Windows版本上是文件夹%APPDATA%\Microsoft\Windows\SendTo
(经Stephan确认)。
要创建快捷方式文件,请在批处理文件上用鼠标右键单击,然后在子菜单发送至子菜单中的打开的上下文菜单中单击桌面(创建快捷方式)< / strong>。
切换到Windows桌面,然后在刚刚创建的快捷方式上用辅助(右键)单击,然后在最后一个项目属性上打开的上下文菜单中单击鼠标左键。
在目标上首先附加,该字符串 %*
(空格,百分号,星号)对于以后使用完整的合格文件名运行批处理文件很重要Windows资源管理器将所有选定文件作为参数传递给批处理文件。其次,在评论中写一个注释,该注释对您以后了解此快捷方式在使用中的作用很有用。您也可以单击按钮更改图标,然后从%SystemRoot%\System32\shell32.dll
中选择一个更好的图标,因为Windows已自动为批处理文件快捷方式选择了一个。然后使用确定按钮关闭属性。
再次使用刚刚创建和修改的快捷方式上的辅助(右键)单击,并在菜单项重命名上使用主要(左)鼠标单击。将快捷方式文件重命名为复制所选文件。
现在Windows桌面上的快捷方式文件已准备好移动到SendTo
文件夹中。因此,使用主(左)键单击鼠标右键,选择快捷方式文件,按 Ctrl + X 进行剪切,在Windows资源管理器中打开用户帐户的SendTo
文件夹,然后将带有 Ctrl + V 的快捷方式文件粘贴到该文件夹中。
现在可以从Windows资源管理器中使用批处理文件。您可以在F:\Source
中选择一个或多个文件(不是文件夹),然后用鼠标的第二个(右键)单击所选文件中的一个以打开上下文菜单,然后在子菜单中单击鼠标左键<在复制所选文件或您为快捷方式文件指定的任何名称上,strong>发送至。
该批处理文件运行 FOR 循环,处理所有传递给%*
引用的批处理文件的文件名。每个文件名都一个接一个地分配给循环变量A
。
没有驱动器号F:
的当前文件的路径由第二个 FOR 处理,该路径使用反斜杠作为分隔符将路径字符串分成两个子字符串。第一个子字符串是Source
,它分配给不再使用的指定循环变量B
。 \Source\
之后没有驱动器号和冒号的所有其他路径均根据ASCII table分配给下一个循环变量C
。因此,循环变量C
保留当前文件的目录路径,不包含F:\Source\
,并以反斜杠结尾,这对于下一个命令 XCOPY 很重要。
注意:tokens=
后面的数字确定从源文件路径忽略的目录级别的数目。
命令 XCOPY 用于将完全限定文件名保存在循环变量A
中的文件复制到文件夹C:\Destination
,并创建目录树作为hold in循环变量C
(如果有必要)。如果目标参数以反斜杠结尾,则 XCOPY 总是将目标参数解释为目录。这就是为什么循环变量C
包含以反斜杠结尾的路径如此重要的原因。
所有文件复制完毕后,由于命令 PAUSE ,cmd.exe
暂停了批处理文件的执行,以便您可以验证所有操作是否按预期进行。
请注意,批处理文件不能用于一次执行复制数千个文件的操作。命令行的长度受Windows限制。因此,不可能从Windows资源管理器传递给成批文件数千个完全合格的文件名。
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
call /?
...解释%*
。echo /?
for /?
xcopy /?