CSVファイルをループして、2つの列からフルパス変数を作成したいのですが、特定の1つの列の値が「Folder」の場合のみです。
これは実際には現在機能しますが、機能しない部分はパス変数の作成です。
2つのポイント:
私が見ている2つの列は、最も深いフォルダーと両方のルートフォルダーです。このように: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%
)
)
CSVのサンプル:
ID; PROGID; NAME; PARENTID; PARENT_FOLDER; PATH; インスタンス; DESC; 注文; 23; Folder; Stammordner; 4; 4; PRODUKTION /; 0 ;;;
動作していないもの:
現在、実行するたびに「Echoisoff」出力が表示されます。どういうわけかファイナルパスが設定されていないと思いますが、どこにも行きません。
また、私がそれを行う方法が一般的な方法であるかどうかもわかりません-私はバッチに非常に慣れていません-私が開発者であるとしても、それは私にとってどういうわけか非常に複雑です..
よろしく
サンプルデータと、6番目のトークンにスラッシュが1つしかないという事実を考えると、これは機能的に同じであるはずだと思います。
@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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加