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
变量,脚本将按照预期工作。