Способ Windows CLI скопировать в тот же каталог и изменить только регистр имени файла?

У меня Windows 10 pro с файловой системой NTFS. Я думаю, что файловая система полностью чувствительна к регистру. Я могу хранить файл Bill_and_Ted.txt в каталоге и писать сценарии, которые не примут его за bill_and_ted.txt. Приложения Linux WSL, обращающиеся к каталогам NTFS, полностью чувствительны к регистру. Но похоже утилиты Windows путаются.

Таким образом, NTFS, вероятно, чувствительна к регистру, но, возможно, Windows — нет. Возможно ли в Windows создать два файла в одном каталоге, которые различаются только регистром ASCII?

По разным причинам разработки программного обеспечения я хотел бы разместить файлы Bill_and_Ted.txt и bill_and_ted.txt в одном каталоге, а затем изменить их содержимое. Но до сих пор Powershell Copy-Item и Windows xcopy отказываются копировать в один и тот же каталог, когда имена файлов различаются только в случае. Они терпят неудачу с сообщением «Файл не может быть скопирован сам на себя».

Есть ли встроенный в Windows способ копирования в тот же каталог и изменения только регистра имени файла?

2 ответа

Это может быть полезно.

https://superuser.com/a/412413/1176865

Перейдите в каталог и выполните следующую команду:

      for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")

Вот разбивка на случай, если кто-то захочет изменить/улучшить:

  • for /f- Для каждой строки
  • "Tokens=*"- Обработка каждого элемента в каждой строке.
  • %f in (...)-%fэто имя вашей переменной для каждого элемента.
  • - перечисляет все файлы и подкаталоги в каталоге.
  • - (параметр для каталога) Используются строчные буквы.
  • /b- (параметр для каталога) Использует чистый формат, только имена файлов/каталогов, без размера и заголовков.
  • /a-d- (параметр для каталога ) Не перечислять каталоги . ( aозначает attribute, -означает notи dозначает directory) .
  • rename "%f" "%f"- переименуйте файл, присвоив ему собственное имя, которое на самом деле написано строчными буквами.dirкоманда и/lкомбинация.

Короткий ответ: пока вы используете Windows, это не будет работать. Windows API не поддерживает чувствительность к регистру.

в отношении:https://stackoverflow.com/questions/33998669/windows-ntfs-and-case-sensitivity

Другие вопросы по тегам