通过在php中提示input第一个数字来连续编号

PHP,命令行,窗口。

我需要顺序编号每个.txt文件在一个目录中。 任何方式我可以指定的第一个号码在序列中使用的命令行时,我input脚本? (而不是每次手动编辑脚本本身)。

或者(更好)被提示input第一个数字两次 (确认)?

就像在命令行(“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); ?> 

有什么提示吗?

你应该使用$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); ?> 

在全局$argv数组中,PHP可以使用命令行参数, 如手册中所述

该数组包含脚本的名称,后面跟着每个进程的参数。 在你的情况下,当你运行:

 php c:\scripts\number.php 285603 

参数285603将作为变量$argv[1] 。 你可以用这个替换你的$i变量,脚本将按照预期工作。