Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何在同时创建的子目录中创建的文件名中包含父文件夹的名称?_Batch File - Fatal编程技术网

Batch file 如何在同时创建的子目录中创建的文件名中包含父文件夹的名称?

Batch file 如何在同时创建的子目录中创建的文件名中包含父文件夹的名称?,batch-file,Batch File,首先,谢谢你回答了所有关于这个主题的问题,对我帮助很大 我创建了一个创建文件夹和虚拟文件的批处理文件,因为我们一遍又一遍地为不同的客户使用该结构 这很简单: mkdir "0. Folder 0" mkdir "1. Folder 1" mkdir "2. Folder 2" mkdir "3. Folder 3" mkdir "4. Folder 4" mkdir "5. Folder 5" mkdir "6. Folder 6" mkdir "7. Folder 7" mkdir "8. F

首先,谢谢你回答了所有关于这个主题的问题,对我帮助很大

我创建了一个创建文件夹和虚拟文件的批处理文件,因为我们一遍又一遍地为不同的客户使用该结构

这很简单:

mkdir "0. Folder 0"
mkdir "1. Folder 1"
mkdir "2. Folder 2"
mkdir "3. Folder 3"
mkdir "4. Folder 4"
mkdir "5. Folder 5"
mkdir "6. Folder 6"
mkdir "7. Folder 7"
mkdir "8. Folder 8"

type nul > "3. Folder 3"\"ADMIN - Random Dummy filename".xlsx
type nul > "3. Folder 3"\"ADMIN - Random Dummy filename".pdf
type nul > "3. Folder 3"\"ADMIN - Random Dummy filename".pdf
type nul > "3. Folder 3"\"ADMIN - Random Dummy filename".xlsx
现在我的问题来了,如果我们创建这些子文件夹的客户机文件夹被附加在名称中,那就太棒了

例如: 客户名称:测试客户2015最终

结果: 测试\u客户端\u 2015 \u最终\3。文件夹3\TEST\u CLIENT\u 2015\u FINAL-Random Dummy filename.pdf


希望有人能帮助我?

如果在目录TEST\u CLIENT\u 2015\u FINAL中执行此批处理文件,您可以使用它:

@echo on
setlocal EnableDelayedExpansion

rem Get name of current working directory.
for /F "delims=" %%D in ("%CD%") do set "ParentFolder=%%~nxD"

rem Create subdirectories in current working directory from 0 to 8 in steps of 1.
rem And create in each subdirectory 2 files with name of current directory in name.
for /L %%V in (0,1,8) do (
    set "FolderName=%%V. Folder %%V"
    mkdir "!FolderName!"
    type nul>"!FolderName!\%ParentFolder% - Random Dummy filename.pdf"
    type nul>"!FolderName!\%ParentFolder% - Random Dummy filename.xlsx"
)
endlocal
要了解使用的命令,请打开命令提示窗口并运行:

  • 获取/?
  • mkdir/?
    md/?
  • 设置/?
  • setlocal/?

使用参数
/?
启动命令会输出此命令的帮助。

您似乎在问,“如何在批处理脚本中使用变量?”

就像代数一样:

5 * x = 10
您可以推断
x=2
。几乎所有脚本语言中都有相同的约定。在批处理脚本中,可以通过以下方式设置变量:

set "x=10"
等号两边都没有空格。然后,要检索
x
的值,请将其括在
%
符号中。如果是的话

set "x=10"
echo %x%
。。。然后
10
将打印到屏幕上

这就是最基本的。下一步是了解循环的
for
循环允许您反复重复相同的命令或命令块,并且变量随每次迭代而变化。例如:

for %%I in (apples oranges pineapples) do echo %%I
。。。会回声

apples
oranges
pineapples
看到了吗?正如您可能已经注意到的,
for
循环与语法稍有不同的变量交互,左侧有百分号

这些基本知识可能已经足够让您理解我下面提供的解决方案

看起来您的脚本有相当多的重复,只是数字在递增。我认为使用几个循环来创建测试结构会容易得多

@echo关闭
setlocal
rem//可选语法:script.bat“客户端名称”
设置“客户端=测试客户端\u 2015\u最终”
如果不是“%~1”==”设置“客户端=%~1”
rem//md是mkdir的同义词
md“%client%”
rem//let%%I=I+1,从0开始,以8结束
对于(0,1,8)do中的/L%%I(
md“%client%\%%I.文件夹%%I”
rem//运行相同的命令,让%%e=xlsx作为第一个循环,pdf作为下一个循环
rem//如果愿意,您可以在此处添加docx、pptx和其他扩展。
对于%%e in(xlsx pdf)do(
键入NUL>%client%\%%I.文件夹%%I\%client%-随机伪文件名。%%e
)
)