我正在尝试获取其中包含特定文件*.t
的文件夹列表(文件夹中只有一个这样的文件):
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('Dir /B /A:-D /S "D:\Old\Stuff\*.t"') do
(@echo %%~dpa>>Folders.txt)
endlocal
这有效,并为我提供了一个文件,其中包含完整路径和最后一个\
...
e.g。
D:\ Old \ Stuff \ Folder 1 \
D:\ Old \ Stuff \ Folder 2 \
D:\ Old \ Stuff \ Folder 3 \
然后,我想将带有内容的文件夹移到另一个位置,但它无效:
for /f "delims=" %%i in (Folders.txt) do Move %%i "D:\New\Stuff\"
我做错了什么?
答案 0 :(得分:0)
试
for /f "delims=" %%i in (Folders.txt) do Move "%%i*" "D:\New\Stuff\"
move
的第一个参数应该用引号括起来,因为目录名似乎包含空格; *
指定"目录中的所有文件"。
您还没有说过是否要移动任何子目录。您应该注意,move是为文件而不是目录而设计的。
答案 1 :(得分:0)
由于没有可能的重复,解决方案非常简单;你甚至不需要临时文件Traceback (most recent call last):
File "main.py", line 3, in <module>
list.sort = error
TypeError: can't set attributes of built-in/extension type 'list'
:
Folders.txt
for /F "delims=" %%F in ('dir /S /A:-D /B "D:\Old\Stuff\*.t"') do (
move "%%~dpF." "D:\New\Stuff\"
)
返回每个找到的%%~dpF
文件的父目录,并带有反斜杠。只需追加*.t
,即当前目录,因此尾随.
不会再导致\
命令出现问题。
不要尝试删除尾部反斜杠,因为这可能会在某些特殊情况下导致问题:假设目标目录为move
,因此删除D:\
离开的\
与D:
相同(但D:\
是)。
即使在某个目录中可能有多个D:\.
文件,代码仍然有效,尽管*.t
命令会为每个副本引发错误,因为该目录已被移动之前。只需在move
命令行中附加或前置2> nul
即可隐藏这些(和其他)错误。