【发布时间】:2013-12-29 19:24:06
【问题描述】:
我意识到这里需要重新考虑其他一些事情,但只是试图让提示暂时起作用。
我想重命名一个文件夹。这在使用 argv 时有效,但在提示输入新名称时无效。
使用 php rename.php foo 调用有效
重命名.php
$baseDir = __DIR__.'\\app\\';
$name = $argv[1];
if(is_dir($baseDir.'src')) {
rename($baseDir.'src', $baseDir.$name);
}
提示输入新名称会引发错误
PHP Warning: rename(C:\Users\lotus\projects\apisUWontHate\app\src,C:\Users\lotus\projects\apisUWontHate\app\foo
): The filename, directory name, or volume label syntax is incorrect. (code: 123)
重命名.php
$baseDir = __DIR__.'\\app\\';
echo 'Enter the name for your app. This will be the root namespace.';
$handle = fopen('php://stdin', 'r');
$name = fgets($handle);
fclose($handle);
if(is_dir($baseDir.'src')) {
rename($baseDir.'src', $baseDir.$name);
}
我尝试检查类型并回显结果,但两者完全相同
echo gettype($name);// string
echo $baseDir.$name;// C:\Users\lotus\projects\apisUWontHate\app\foo
我在这里没有正确使用标准输入还是有其他可能导致错误消息的原因?
【问题讨论】:
-
除非您的文件名以换行符结尾,否则您需要修剪 fgets() 的输入,因为它包含新行
-
从标准输入(和 fgets)读取时,通常会得到一个额外的换行符;这就是警告可能抱怨的内容。
-
@MarkBaker 你想把它作为答案吗?我会接受它,因为你是第一个。有史以来最快的答案:-)