переименовать несколько файлов добавить номер к имени, используя пакет

0

У меня есть файлы в папке с именем unix_aaa.txt unix_bbb.txt unix_ccc.txtи так далее.

Как я могу изменить все файлы, которые начинаются с unixименами вроде

001_unix_aaa.txt

002_unix_bbb.txt

003_unix_ccc.txt
eathapeking
источник
1
это партия или удар?
Anishsane
2
batch => windows, bash => linux. Ответ сценария полностью изменится .
Anishsane
аааа, это партия :)

Ответы:

1

Вот пакетный (Windows) скрипт, который сделает это

setlocal enabledelayedexpansion
set n=1
for %%a in (unix_*.txt) do (
if !n! lss 10 (
ren "%%a" "00!n!_%%a"
) else (
if !n! lss 100 (
ren "%%a" "0!n!_%%a"
) else (
if !n! geq 100 (
ren "%%a" "!n!_%%a"
)
)
)
set /a n+=1
)
Бали С
источник
могу ли я попросить, чтобы больше выходных данных получилось как 001 - 010, тогда это 010 вместо 011, как мне это исправить или нет никакого способа
1
Что вы имеете в виду? Я не следую :)
Бали C
: D означает, что от 001_unix_aaa.txt до 009_unix_aaa.txt, затем в 010 он выходит как 0010_unix_aaa.txt, это должно быть 010_unix_aaa.txt, я пытаюсь объяснить столько, сколько может мой английский> _ <
1
Ах да, теперь я вас понял: D Это уже должно было быть сделано, я проверил это так, чтобы оно выглядело как 001 010 100 и т. Д. Я проведу некоторое тестирование!
Бали C
эй, эй, я получил это сейчас спасибо, потому что я не напечатал все правильно, поэтому его ошибка спасибо: D: D: D: D: D
1

Это для раковин Борна.

n=1; for f in unix*
do
    mv "$f" "`printf %03d $n`_$f"
    n=$((n+1))
done
kmkaplan
источник
это не работает, я вставляю текстовый документ, затем меняю его .bat имя каждого файла должно быть одинаковым, но спасибо, я обнаружил проблему в том, что это printf в команде cmd
просто обычная командная строка, я не знаю много об этом, все, что я делал, это
@eathapeking что echo $0говорит?
kmkaplan
ничего не меняется :) вот пример имени файла unixinv_RSSPA_16Nov2012.csv
2
Из 1-го комментария, похоже, что это партия, а не Bash
Anishsane