Windows 强制将长文件名传递给dos以执行命令
我对以下简单的dos命令有问题:Windows 强制将长文件名传递给dos以执行命令,windows,batch-file,Windows,Batch File,我对以下简单的dos命令有问题: FOR %%f IN (.\07_PROCEDURES\DataSources\*.sql) DO echo "%%f" 它对扩展名为sql的每个文件执行一些操作。除了长名字,一切都很好。当目录包含扩展名为sql\u的文件时,它们也会被拾取。但这种行为取决于8.3文件是否在文件系统中。如果它们被打开(大多数计算机上的默认选择)sql\uu将被传递,因为扩展被裁剪 如何强制获取长文件名?谢谢 p.S.不提供powershell升级。您可以尝试以下方法: for
FOR %%f IN (.\07_PROCEDURES\DataSources\*.sql) DO echo "%%f"
它对扩展名为sql
的每个文件执行一些操作。除了长名字,一切都很好。当目录包含扩展名为sql\u
的文件时,它们也会被拾取。但这种行为取决于8.3文件是否在文件系统中。如果它们被打开(大多数计算机上的默认选择)sql\uu
将被传递,因为扩展被裁剪
如何强制获取长文件名?谢谢
p.S.不提供powershell升级。您可以尝试以下方法:
for /f "usebackq delims=" %%f in (`dir /b .\*.sql ^| findstr /r .*\.sql$`) do @echo "%%f"
您可以尝试检查循环本身中的扩展
for %%f in (*.sql) do (
if /i "%%~xf" EQU ".sql" echo %%f
)
很好,除了一件事。它只给出文件名,没有路径。但我需要一条路。请参阅相关的更新代码。想办法加入他们。。。