好吧,我正在尝试使一个批处理文件生成一系列的文件和文件夹,但无法找到如何做到这一点。批处理文件生成文件
我的想法:
FOR /f "Tokens=* delims=" %%I IN (export2.csv) DO call:create %%I GOTO:EOF
:create ECHO 1 >>%~pd0%1
但它并没有在所有的工作。
好吧,我正在尝试使一个批处理文件生成一系列的文件和文件夹,但无法找到如何做到这一点。批处理文件生成文件
我的想法:
FOR /f "Tokens=* delims=" %%I IN (export2.csv) DO call:create %%I GOTO:EOF
:create ECHO 1 >>%~pd0%1
但它并没有在所有的工作。
想象一下,这是我结束了。它将生成两个路径,并使用masterlist.csv中列出的文件的名称创建一个空文件。
源代码
@ECHO OFF
CHDIR "%~dp0"
SET Count=0
ECHO/ Generating Necessary File, please Wait...
FOR /F %%A IN (Masterlist.csv) DO CALL:MKDIR %%A
EXIT /B
:MKDIR
SET /A Count+=1
SET "Path=%~dp1"
SET "File=%~nx1"
IF NOT EXIST "%Path%" MKDIR "%Path%
IF NOT EXIST "%Path%" CALL:ERROR "Path"
IF NOT EXIST "%Path%\%File%" ECHO/ >>"%Path%\%File%"
IF NOT EXIST "%Path%\%File%" CALL:ERROR
EXIT /B
:ERROR
IF NOT EXIST "Errorlog.csv" ECHO Error, Line Count>>Errorlog.csv
ECHO %~1, Line %Count%>>Errorlog.csv
几个例子从Masterlist.csv
2006\MS06-003\Office2000\office2000-kb892842-fullfile-enu.exe
2006\MS06-003\Office2003\office2003-kb892843-fullfile-enu.exe
2006\MS06-003\Office2003\WinSec-MS06-003-009-P44333-outlook2003-kb892843-fullfile-enu.exe
2006\MS06-003\OfficeXP\officexp-kb892841-fullfile-enu.exe
2006\MS06-006\WindowsMedia-KB911564-x86-ENU.exe
2006\MS06-007\2003\WindowsServer2003-KB913446-x86-ENU.exe
2006\MS06-007\XP\WindowsXP-KB913446-x86-ENU.exe
2006\MS06-012\2003\office2003-KB905756-FullFile-ENU.exe
2006\MS06-015\2000\Windows2000-KB908531-x86-ENU.EXE
2006\MS06-015\2003\WindowsServer2003-KB908531-x86-ENU.exe
因为我不知道你的数据文件的样子,很难在这里给个好建议,但您的代码可能会被清理了一下:
set "filepath=%~dp0"
for /f "tokens=* delims=" %%I in (export2.csv) do call :create "%%I"
rem This is needed to avoid stepping into the subroutine again
goto :eof
:create
rem This will create an empty file instead of one that contains a single line with 1
copy nul "%filepath%%~1"
goto :eof
这不会产生任何的目录,虽然。你可以用md
来创建这些。
是的,我这样做的方式的问题是,它没有创建目录,这是我需要的事实。 – user1451070 2012-08-03 11:11:19
'mkdir' /'md'如果不存在,可以创建一个完整的目录树。这应该很容易整合。 – Joey 2012-08-03 11:15:49
错字在第二行线。应该是'%〜dp0%1' – kmote 2013-05-15 19:07:06