Змінна для отримання абсолютного шляху в пакетному сценарії Windows


9

У мене є наступний скрипт, щоб перелічити всі файли, рекурсивно з каталогу, що мають .phtmlрозширення.

@echo off
setlocal
for /f %%G in ('forfiles /s /m *.phtml /c "cmd /c echo @relpath"') do echo %%G >> listoffiles.txt
endlocal
exit

У ньому вказано лише відносний шлях до файлів. Вищеописаний сценарій працює з проміжного місця, тому я не отримую повних шляхів у @relpathзмінній.

Також я отримую лапки в рядках результатів, які я хочу видалити.

Я хочу отримати абсолютний шлях до тих файлів з кількома можливими змінами коду, якщо доступна глобальна змінна, яка може бути використана в моєму коді, то це найкраще для мене, оскільки я не дуже багато пакетного сценарію Windows.

Відповіді:


3

Я не отримую повних шляхів у @relpathзмінній.

також я отримую лапки в рядках результатів, які я хочу видалити.

Наступний пакетний файл робить те, що ви хочете:

@echo off
setlocal enableDelayedExpansion
for /f %%G in ('forfiles /s /m *.phtml /c "cmd /c echo @path"') do (
  set _name=%%G
  rem strip the quotes
  echo !_name:~1,-1! >> listoffiles.txt
  )
endlocal
exit

Примітки:

  • Використовує @path(Повний шлях до файлу) замість @relpath(Відносний шлях до файлу).
  • Використовує substringвирази змінної для видалення лапок ( :~1,-1видаляє перший і останній символи з рядка змінної).
  • Використовує setlocal EnableDelayedExpansionтак, що змінні оновлюються правильно у forциклі.

Подальше читання

  • Індекс AZ командного рядка Windows CMD - відмінна довідка для всіх речей, що стосуються cmd-рядка Windows.
  • enabledelayedexpansion - затримка розширення призведе до розширення змінних на час виконання, а не на час розбору.
  • for / f - команда Loop проти результатів іншої команди.
  • forfiles - Виберіть файл (або набір файлів) і виконайте команду над кожним файлом. Пакетна обробка.
  • змінні - Вилучення частини змінної (підрядка).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.