Рейтинг:0

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

флаг in

У меня 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 способ копирования в тот же каталог и только изменение регистра имени файла?

Рейтинг:3
флаг cf

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

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

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

for /f "Tokens=*" %f in ('dir /l/b/a-d') do (переименовать "%f" "%f")

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

  • для / ф - Для каждой строки
  • "Токены=*" - Обработайте каждый элемент в каждой строке.
  • %f в (...) - %f ваше имя переменной для каждого элемента.
  • директор - перечисляет каждый файл и подкаталог в каталоге.
  • - (параметр для каталога) Использует нижний регистр.
  • / б - (параметр для каталога) Использует голый формат, только имена файлов/каталогов, без размера, без заголовков.
  • /объявление - (параметр для каталога) Делать нет список каталоги. (а означает атрибут, - означает нет и г означает каталог).
  • переименовать "%f" "%f"- переименовать файл с его собственным именем, которое на самом деле в нижнем регистре директор команда и комбинация.
флаг in
Идеальный! Я удалил свой ответ и проголосовал за ваш, потому что он лучше. Вам не нужны круглые скобки вокруг команды `rename` (и я бы набрал `ren`, потому что я ленив).
another victim of the mouse avatar
флаг cf
спасибо за разбор для меня. мой СДВГ решил, что я вложил достаточно умственной энергии. :П
Рейтинг:1
флаг za

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

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

Рейтинг:0
флаг in

Решение состоит в том, чтобы использовать fsutil для включения setCaseSensitiveInfo флаг на содержащем каталоге. Итак, в моем случае я установил местоположение в каталог назначения, а затем использовал:

Файл fsutil.exe setCaseSensitiveInfo (Get-Location) включить

Статья HowToGeek, объясняющая флаг setCaseSensitiveInfo

Спасибо за этот ответ stackoverflow!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.