批处理文件 - 循环通过csv并从两列创建路径变量

时间:2013-12-11 10:03:36

标签: variables batch-file csv

我想遍历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”输出。我认为不知怎样,最终路径没有设置,但我没有得到它。

  • 我也不知道我这样做的方式是否是常见的方式 - 我是批处理的新手 - 即使我是开发人员,它对我来说也很复杂..

此致

1 个答案:

答案 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