2011-02-18 27 views
2

我有以下简单的DOS命令的问题:力传递长文件名到DOS for命令

FOR %%f IN (.\07_PROCEDURES\DataSources\*.sql) DO echo "%%f" 

它确实与sql扩展每个文件的一些动作。一切正常,除了长名称。当目录包含文件时,使用sql_扩展名,它们也会被拾取。但是这种行为取决于文件系统上的8.3文件是否为turned on or off。如果它们已打开(大多数计算机上的默认选项),则会传递sql_,因为扩展会被裁剪​​。

如何强制for获取长文件名?谢谢 !

P.S.不要提供PowerShell升级。

回答

2

您可以尝试检查循环本身

for %%f in (*.sql) do (
    if /i "%%~xf" EQU ".sql" echo %%f 
) 
+0

工作正常。谢谢 ! – gor 2011-02-18 12:32:15

1

你可以尝试这样的事情:

for /f "usebackq delims=" %%f in (`dir /b .\*.sql ^| findstr /r .*\.sql$`) do @echo "%%f" 
+1

延长工作正常,但一两件事。它只提供文件名,没有路径。但我需要路径。查看有问题的更新代码。搞清楚,我怎么能加入他们...... – gor 2011-02-18 12:20:30