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_Directory - Fatal编程技术网

Batch file 批处理脚本-创建文件夹问题

Batch file 批处理脚本-创建文件夹问题,batch-file,directory,Batch File,Directory,我正在尝试创建一个批处理脚本,该脚本根据文本文件中的行创建文件夹。我希望能够自动执行“D”功能,这样就不需要输入 @回音 set/p D=“输入名称,例如ABCD:” 对于/F“delims=”%(list.txt)中的%%a,请执行以下操作( 对于%%x英寸( “C:\test\%D%\%a” “C:\test\%D%\%a\Folder1” “C:\test\%D%\%a\Folder2” )做( MD“%%~x” ) ) 我的列表文件如下所示 杰克-12345 约翰12345 我想阅读每行

我正在尝试创建一个批处理脚本,该脚本根据文本文件中的行创建文件夹。我希望能够自动执行“D”功能,这样就不需要输入

@回音 set/p D=“输入名称,例如ABCD:”

对于/F“delims=”%(list.txt)中的%%a,请执行以下操作( 对于%%x英寸( “C:\test\%D%\%a” “C:\test\%D%\%a\Folder1” “C:\test\%D%\%a\Folder2” )做( MD“%%~x” ) )

我的列表文件如下所示

杰克-12345 约翰12345

我想阅读每行的前4个字符,并在已经存在的相关文件夹中创建目录

因此,JACK-12345将在C:\test\JACK\JACK-12345中创建一个文件夹,JOHN将创建一个文件夹C:\test\JOHN\JOHN-12345

任何帮助都将不胜感激

@ECHO关闭
SETLOCAL ENABLEDELAYEDEXPANSION
设置“targetdir=U:\destdir”
对于/F“delims=”%(q35285628.txt)中的%%a,请执行以下操作(
设置“ch4=%%a”
设置“ch4=!ch4:~0,4!”
对于%%x英寸(
%targetdir%\!ch4!\%%a
%targetdir%\!ch4!\%%a\Folder1
%targetdir%\!ch4!\%%a\Folder2
)做(
回波(MD“%%~x”
)
)
后藤:EOF
您需要更改
targetdir
的设置以适应您的环境

我使用了一个名为
q35285628.txt
的文件,其中包含用于测试的数据

所需的MD命令仅用于测试目的。
ECHO
ed。验证命令正确后,将
ECHO(MD
更改为
MD
以实际创建目录。追加
2>nul
以抑制错误消息(例如,当目录已存在时)

调用
delayedexpansion
以允许元变量
%%a的子字符串
将整个字符串视为读取到
ch4
,然后选择前4个字符

块中需要
!var!
,才能在运行时访问变量的变化值


对于扩展问题(未指定:“数学”等在树中的位置-附加、替换,无论什么

使用常规的“肉”:

 SET "ch4=%%a"
 SET "ch4=!ch4:~0,4!"
 SET "folder1=Folder1"
 if /i "!ch4:~0,1!"=="m" SET "folder1=Maths"
 if /i "!ch4:~0,1!"=="s" SET "folder1=Science"
 FOR %%x IN (
  "%targetdir%\!ch4!\%%a"
  "%targetdir%\!ch4!\%%a\!folder1!"
  "%targetdir%\!ch4!\%%a\Folder2"
 ) DO (
  ECHO(MD "%%~x"
 )
)
如果从文件中读取的行的第一个字符是“m”(在任何一种情况下),则将原始方案中的“folder1”替换为“math”,如果是“s”,则替换为“Science”,否则替换为“folder1”。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
设置“targetdir=U:\destdir”
对于/F“delims=”%(q35285628.txt)中的%%a,请执行以下操作(
设置“ch4=%%a”
设置“ch4=!ch4:~0,4!”
对于%%x英寸(
%targetdir%\!ch4!\%%a
%targetdir%\!ch4!\%%a\Folder1
%targetdir%\!ch4!\%%a\Folder2
)做(
回波(MD“%%~x”
)
)
后藤:EOF
您需要更改
targetdir
的设置以适应您的环境

我使用了一个名为
q35285628.txt
的文件,其中包含用于测试的数据

所需的MD命令仅用于测试目的。
ECHO
ed。验证命令正确后,将
ECHO(MD
更改为
MD
以实际创建目录。追加
2>nul
以抑制错误消息(例如,当目录已存在时)

调用
delayedexpansion
以允许元变量
%%a的子字符串
将整个字符串视为读取到
ch4
,然后选择前4个字符

块中需要
!var!
,才能在运行时访问变量的变化值


对于扩展问题(未指定:“数学”等在树中的位置-附加、替换,无论什么

使用常规的“肉”:

 SET "ch4=%%a"
 SET "ch4=!ch4:~0,4!"
 SET "folder1=Folder1"
 if /i "!ch4:~0,1!"=="m" SET "folder1=Maths"
 if /i "!ch4:~0,1!"=="s" SET "folder1=Science"
 FOR %%x IN (
  "%targetdir%\!ch4!\%%a"
  "%targetdir%\!ch4!\%%a\!folder1!"
  "%targetdir%\!ch4!\%%a\Folder2"
 ) DO (
  ECHO(MD "%%~x"
 )
)

如果从文件中读取的行的第一个字符是“m”(在任何一种情况下),则将原始方案中的“folder1”替换为“math”,如果是“s”,则替换为“Science”,否则替换为“folder1”。

您是在寻找“前4个字符”还是在寻找“直到破折号的零件”?从您的大量示例中,两者都是相同的。仅前4个字符,我正在使用的所有文件夹将只有4个字符(示例中使用的名称可能不是最好的方式,因为名称可能会更长)。您是在寻找“前4个字符”还是在寻找“最前面的部分”?这两个示例都相同。仅前4个字符,我使用的所有文件夹将仅为4个字符(示例中使用的名称可能不是最好的表达方式,因为名称可能更长)工作非常好!谢谢Magoo非常好的工作非常感谢如果我有一个类似于C:\test\math和C:\test\Science的路径,有没有办法通过阅读第一个字符使它进入“math”或“Science”文件夹?例如,如果txt中的第一个字符是S,它将进入Science,如果是M,它将进入mathematics?“%targetdir%\!ch4!\%%a”“%targetdir%\!ch4!\%%a\Folder1”“%targetdir%\!ch4!\%%a\Folder2”效果非常好!感谢Magoo非常好的工作非常感谢如果我有一个类似于C:\test\mathematics和C:\test\Science的路径,有没有办法通过阅读它知道的第一个字符进入“mathematics”或“Science”来实现它“文件夹?例如,如果文本中的第一个字符是S,它将进入科学,如果是M,它将进入数学?”%targetdir%\!ch4!\%%a”“%targetdir%\!ch4!\%%a\Folder1”“%targetdir%\!ch4!\%%a\Folder2”