【发布时间】:2017-11-16 17:30:58
【问题描述】:
我正在努力创建一个可以在任何文件夹中使用的批处理文件,它将当前文件夹及其所有内容复制到另一个位置。目的是允许我通过运行批处理文件对任何当前文件夹进行非常快速的备份。批处理文件对我来说是新的,但编程不是。这是我的代码。
@echo off
title Copy This Directory
:: get current directory
set startdir=%cd%
echo.startdir = %startdir%
:: copy the test folder
xcopy "%startdir%" "F:\Temp Backup\" /s /y
pause
这会将源文件夹中的文件和文件夹复制到新目标,但我想将文件夹本身及其内容一起复制。即,如果批处理文件位于名为“FromFolder”的文件夹中,我希望“FromFolder”作为文件夹出现在“F:\Temp Backup\”中,其所有内容都在“F:\Temp Backup\FromFolder”中。我找到了很多关于复制文件的信息,但没有找到关于复制单个目录的信息。我可以复制单个文件,但是当我使用相同的代码并将文件名更改为文件夹名称时,它会复制文件夹的内容而不是文件夹本身。有人可以告诉我我错过了什么。
【问题讨论】:
-
所以您打算从要备份的文件夹中运行批处理文件?或者你打算做一个拖放批处理文件?不管怎样,基本上你想要做的是获取文件夹路径的父文件夹。这是获取父目录的基本语法:
for %%G in ("%cd%\.") do set parent=%%~nxG. -
...或者
"%~dp0." -
这有助于我获取父文件夹的名称。
-
不小心按下了返回,它在我完整回答之前保存了它。我想在一个文件夹中有一个批处理文件,当我双击时复制包含它的文件夹。您的代码可以帮助我找到父文件夹的名称。我真正的问题是如何使 xcopy 复制该单个文件夹而不仅仅是其中的文件。到目前为止,如果我尝试使用 xcopy 中的文件夹名称复制文件夹,它会复制文件夹的内容,但不会复制文件夹本身。我想复制文件夹及其内容,以便目标包含文件夹,该文件夹又包含文件夹的内容。
-
@Codeabike,您有父文件夹的名称。那么您认为您需要如何处理批处理文件中的这些信息? 1) 在目标文件夹中创建目录。 2) 在 Xcopy 中使用该文件夹路径。
标签: batch-file