Принудительно передавать длинные имена файлов в DOS для команды - PullRequest
2 голосов
/ 18 февраля 2011

У меня проблема со следующей простой командой dos:

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

Он выполняет некоторые действия для каждого файла с расширением sql.Все отлично работает, кроме длинных имен.Когда каталог содержит файлы с расширениями sql_, они тоже подобраны.Но это зависит от того, включены ли файлы 8.3 в файловую систему или выключены .Если они включены (выбор по умолчанию на большинстве компьютеров), передаются sql_, поскольку расширение обрезается.

Как заставить for извлекать длинные имена файлов?Спасибо!

PS Не предлагать обновление PowerShell.

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011

Вы можете попробовать проверить расширение в самом цикле

for %%f in (*.sql) do  (
  if /i "%%~xf" EQU ".sql" echo %%f
)
1 голос
/ 18 февраля 2011

Вы можете попробовать что-то вроде этого:

for /f "usebackq delims=" %%f in (`dir /b .\*.sql ^| findstr /r .*\.sql$`) do @echo "%%f"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...