我遇到以下简单dos命令的问题:
FOR %%f IN (.\07_PROCEDURES\DataSources\*.sql) DO echo "%%f"
它为每个sql
扩展名的文件执行一些操作。一切都很好,除了长名。当目录包含带有sql_
扩展名的文件时,它们也会被选中。但是这种行为取决于文件系统上的8.3文件是turned on or off。如果它们已打开(大多数计算机上的默认选项),则会传递sql_
,因为会裁剪扩展程序。
如何强制for
获取长文件名?谢谢!
P.S。不提供powershell升级。
答案 0 :(得分:2)
您可以尝试检查循环本身的扩展名
for %%f in (*.sql) do (
if /i "%%~xf" EQU ".sql" echo %%f
)
答案 1 :(得分:1)
您可以尝试这样的事情:
for /f "usebackq delims=" %%f in (`dir /b .\*.sql ^| findstr /r .*\.sql$`) do @echo "%%f"