2013-12-11 200 views
1

我想遍歷一個CSV文件並在兩列中創建一個完整路徑變量 - 並且只有一個特定列的值爲「文件夾」。批處理文件 - 通過csv循環並從兩列創建路徑變量

這實際上現在正常工作,但不工作的部分是創建路徑變量。

兩點:

兩個欄我看是最深的文件夾和文件夾的根aboth。像這樣: first/first1/+ second = first/first1/second

因此,最深處的文件夾將會被填滿,我可以把它當作它來使用。

上面的文件夾將被填充,或者它將成爲列中的0。 同樣的字符串將有一個 「/」,我不得不削減並用反斜槓代替..

這裏是我的代碼:

For /F "tokens=1-7 delims=;" %%a in (L:/Mappe1.csv) Do (

if "%%b"=="Folder" (
    set folder=%%c 
    if NOT %%f==0 (
     set rootFolder ==f 
     rem check for slash.. 
     if %rootFolder=~-1%==/ (
      rem cut it out 
      SET rootFolder=%rootFolder:~0,-1% 
    ) 
     rem both variables set 
     set finalPath=%rootFolder%%folder% 
    ) else (
     rem just the folder 
     set finalpath=%folder% 
    ) 
echo %finalpath% 
) 
) 

SAMPE的CSV的:

ID; PROGID; NAME; PARENTID; PARENT_FOLDER;路徑; ISNTANCE; DESC;訂購; 23; Folder; Stammordner; 4; 4; PRODUKTION /; 0 ;;;

什麼是不工作:

  • 現在我得到的「回聲是關閉」輸出,每次我跑。我認爲最後的路線沒有設定,但我不明白。

  • 也是我不知道如果我這樣做的方式,它是常見的方式 - 我這麼多的新批次 - 即使我是一個開發其在某種程度上對我來說很複雜..

Regards

+0

如果您提供了'csv'文件和'描述任務'的樣本,那麼我們可能會找到一個更直接的方法來做到這一點。 – foxidrive

+0

嘿,謝謝你的回答..我以爲我有一個語法錯誤,這就是爲什麼我沒有提供一個樣本。我編輯的主要職務有樣品和for循環,我用 – Martin

+0

你的代碼有錯誤:此刻的你正在檢查的第六令牌,如果它不爲「0」,你是「token6/token2」,否則設置變量將變量單獨設置爲「token2」。是嗎?文件夾分隔符是/還是\? – foxidrive

回答

1

我認爲這應該是功能上相同,給出樣本數據,並且第6個標記只有一個斜槓的事實。

@echo off 
setlocal enabledelayedexpansion 
For /F "tokens=1-7 delims=;" %%a in (L:\Mappe1.csv) Do (
    if "%%b"=="Folder" (
     set "finalpath=%%c" 
     if NOT "%%f"=="0" set "finalpath=%%f%%c" 
    ) 
set "finalpath=!finalpath:/=!" 
echo "!finalpath!" 
) 
pause 
+0

上面的代碼被編輯。 – foxidrive

+0

謝謝!我在幾分鐘內嘗試它,並會給你回覆 – Martin

+0

你的代碼像魅力一樣工作。感謝那。我會標記你的答案,但在這一點上我還有另外一個問題:這條線是幹什麼的?設置「最終路徑=!最終路徑:/ =!」你正在替換沒有權利的每一個斜線?在這一點上我怎樣才能用反斜槓替換每一個斜線? – Martin

相關問題