2013-12-11 213 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

相关问题