2012-08-03 57 views
0

好吧,我正在嘗試使一個批處理文件生成一系列的文件和文件夾,但無法找到如何做到這一點。批處理文件生成文件

我的想法:

FOR /f "Tokens=* delims=" %%I IN (export2.csv) DO call:create %%I GOTO:EOF 

:create ECHO 1 >>%~pd0%1 

但它並沒有在所有的工作。

+0

錯字在第二行線。應該是'%〜dp0%1' – kmote 2013-05-15 19:07:06

回答

0

想象一下,這是我結束了。它將生成兩個路徑,並使用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 
1

因爲我不知道你的數據文件的樣子,很難在這裏給個好建議,但您的代碼可能會被清理了一下:

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來創建這些。

+0

是的,我這樣做的方式的問題是,它沒有創建目錄,這是我需要的事實。 – user1451070 2012-08-03 11:11:19

+0

'mkdir' /'md'如果不存在,可以創建一個完整的目錄樹。這應該很容易整合。 – Joey 2012-08-03 11:15:49