2015-09-29 44 views
0

我正在尝试清理几个文件共享,并且我尝试在CSV文件中移动文件夹的列表。在delfromtest.csv FOR/F无法正确输出使用循环中的移动

Test1 
Test2 
test3 

我试图用这个。

FOR /F "tokens=1" %%A IN (C:\delfromtest.csv) DO (
if EXIST %Drive%:\%%~A (set asset=%%~A%) 
move "%drive%:\images%drive%\%asset%" "%drive%:\images%drive%\Do not Migrate%drive%\%asset%" 
) 

此输出

move "v:\imagesv\C:\delfromtest.csv" "v:\imagesv\Do not Migratev\C:\delfromtest.csv" 

但如果我从回路移除整个移动命令,如所期望的变量是输出。

+0

闻起来非常像[延迟expanison陷阱(http://stackoverflow.com/a/30284028/2152082)('asset')设置使delayedexpansion。还有一个'%'太多了。应该是:'(set asset = %%〜A)' - 除了你希望'%'成为值的一部分) – Stephan

回答

0

尝试for没有引号或使用usebackq。当变量是从和内for

@echo off 
setlocal enabledelayedexpansion 
for /f %%a in (C:\delfromtest.csv) do (set asset=%%~a 
    if exist %Drive%:\!asset! (
    echo move "%drive%:\images%drive%\!asset!" "%drive%:\images%drive%\Do not Migrate%drive%\!asset!" 
) 
) 
exit /b 0 
+0

'echo move'应该只是'move',可能是测试中的剩余部分。这个评论只是一个提醒,我会在一天之内删除它。 – wOxxOm