我想遍历CSV文件并从两列中创建一个完整路径变量 - 并且只有当一个特定列的值为“Folder”时才会这样。
这实际上现在有效,但不工作的部分是创建路径变量。
两点:
我看到的两列是最深的文件夹和根文件夹。像这样: 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;路径; ISNTANCE; DESC;订购; 23,文件夹; Stammordner; 4; 4; PRODUKTION / 0 ;;;
什么行不通:
现在我每次跑步时都会收到“Echo is off”输出。我认为不知怎样,最终路径没有设置,但我没有得到它。
我也不知道我这样做的方式是否是常见的方式 - 我是批处理的新手 - 即使我是开发人员,它对我来说也很复杂..
此致
答案 0 :(得分: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