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

PHP, командная строка, Windows.

Мне нужно последовательно нумеровать каждый .текст файл в каталоге. В любом случае я могу указать первый номер для использования в последовательности в командной строке, когда я набираю скрипт? (Вместо того, чтобы каждый раз вручную редактировать сам скрипт).

Или вместо этого (даже лучше) быть запрос ввести первый номер дважды (для подтверждения)?

Например, в командной строке («285603» — просто пример):

c:\a\b\currentworkingdir>php c:\scripts\number.php 285603

или (даже лучше)

c:\a\b\currentworkingdir>php c:\scripts\number.php
c:\a\b\currentworkingdir>Enter first number:
c:\a\b\currentworkingdir>Re-enter first number:

Сценарий нумерации:

<?php
$dir = opendir('.');
// i want to enter this number OR being prompted for it to enter twice in the command line
$i = 285603;
while (false !== ($file = readdir($dir)))
{
if (strtolower(pathinfo($file, PATHINFO_EXTENSION)) == 'txt')
{
$newName = $i . '.txt';
rename($file, $newName);
$i++;
}
}
closedir($dir);
?>

Любые намеки, пожалуйста?

1

Решение

Вы должны использовать $argv переменная. Это массив с первым элементом, указывающим имя файла скрипта, а следующие элементы являются переданными аргументами.
Учитывая ваш тип php script.php 1234 в консоли, $argv переменная выглядит следующим образом:

array(4) {
[0]=>
string(10) "script.php"[1]=>
string(4) "1234"}

РЕДАКТИРОВАТЬ: Ваш код должен быть как ниже:

<?php
# CONFIRMATION
echo 'Are you sure you want to do this [y/N]';
$confirmation = trim(fgets( STDIN));
if ($confirmation !== 'y') {
exit (0);
}

$dir = opendir('.');
$i = $argv[1];
while (false !== ($file = readdir($dir)))
{
if (strtolower(pathinfo($file, PATHINFO_EXTENSION)) == 'txt')
{
$newName = $i . '.txt';
rename($file, $newName);
$i++;
}
}
closedir($dir);
?>
1

Другие решения

Аргументы командной строки доступны для PHP в глобальном $argv массив, как описано в руководстве здесь

Этот массив содержит имя сценария, за которым следует каждый исходящий аргумент. В вашем случае, когда вы запускаете:

php c:\scripts\number.php 285603

Аргумент 285603 будет доступен в качестве переменной $argv[1], Вы можете заменить свой $i переменная с этим, и скрипт будет работать как задумано.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector