创建没有文件的根文件夹

时间:2014-08-04 02:04:18

标签: windows batch-file

我一直在努力制作一个仅基于文件夹的上下文菜单'复印机。这与xcopy / T / E非常相似,但xcopy不允许您复制主目录。它只复制子目录(我想?)

所以我有一个程序可以让我突出显示某些文件夹并将它们作为args传递给批处理脚本,我可以遍历它们。我遇到的问题是一切都被评估为第一个arg。我最终让第一个文件夹尝试多次创建自己。

这是我设想的完整脚本。注意我从来没有真正到过第二部分,我让xcopy做正常填充子目录的工作。我只是碰壁试图创建根目录。这对我来说是最关键的事情。来自以前目录的xcopy是不可行的,因为我只想创建某些文件夹

@echo off
setlocal EnableDelayedExpansion


md "copy of folders"
cd "copy of folders"

for %%x in (%*) do (
   echo %%x
   ::^ this will give me all the args full paths as it iterates
   md "%~n1"
   ::^ this retrieves folder name, but its always the first argument's folder name, it doesn't iterate
)

pause

for %%x in (%*) do (
   xcopy %%x "%cd%" /T /E
)

1 个答案:

答案 0 :(得分:1)

更改

 md "%~n1"

从参数1

的名称部分创建目录

 md %%~nxx

从元变量%% x的当前值的名称和扩展部分创建一个目录。

不确定xcopy的用途。您似乎想要将树从新创建的(因此为空)目录复制到当前目录"copy of folders"


这是我的完整测试批次。我使用U:作为测试数据。

@echo off
setlocal EnableDelayedExpansion

PUSHD U:\

md "copy of folders"
cd "copy of folders"

dir
ECHO ============================
for %%x in (%*) do (
  echo %%x
rem  ::^ this will give me all the args full paths as it iterates
  md %%~nxx
rem  ::^ this retrieves folder name, but its always the first argument's folder name, it doesn't iterate
)

DIR
POPD

GOTO :EOF

这是我的测试结果,使用 thisbatch“U:\ path”“u:\ path2”path3

 Volume in drive U has no label.
 Volume Serial Number is 0460-0000

 Directory of U:\copy of folders

05/08/2014  10:56    <DIR>          .
05/08/2014  10:56    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)   2,146,893,824 bytes free
============================
"U:\path"
"U:\path2"
"PATH3"
 Volume in drive U has no label.
 Volume Serial Number is 0460-0000

 Directory of U:\copy of folders

05/08/2014  10:56    <DIR>          .
05/08/2014  10:56    <DIR>          ..
05/08/2014  10:56    <DIR>          path
05/08/2014  10:56    <DIR>          path2
05/08/2014  10:56    <DIR>          PATH3
               0 File(s)              0 bytes
               5 Dir(s)   2,146,795,520 bytes free

请注意,::注释mathod实际上是一个损坏的标签 - 它可能会导致块语句出现问题(带括号的系列语句)因此应该被REM替换

如果要创建相对于当前(文件夹副本)的目录,则使用~nxx。如果您希望在评论中使用完整路径创建这些目录,那么当前目录无关紧要,您应该使用"%%~fx"(包括引号)。

除非您在需要引号时在要创建的名称中包含分隔符(行空格),否则不需要引号。