PHP, 22 bytes
`<?=PATH_SEPARATOR>":";`
imprime 1
se o separador de caminho é ponto-e-vírgula (dois pontos ou vazio para todos os outros sistemas operacionais, exceto para DOS e OS / 2), senão nada.
também 22 bytes , mas não tão seguro:
<?=strpos(__FILE__,92);
imprime um número inteiro positivo se o caminho do arquivo contiver uma barra invertida; mais nada.
Uma alternativa segura com 27 bytes : <?=DIRECTORY_SEPARATOR>"/";
imprime 1
ou nada.
Uma descoberta estranha : <?=__FILE__[1]==":";
( 20 bytes ) também deve ser, não segura, mas ok. Mas, embora __FILE__
finge ser um string (eu tentei var_dump
e gettype
), indexando ele lança um erro, a menos que você copiá-lo em outro lugar (concatenação também funciona) ou usá-lo como um parâmetro de função.
Edit:
<?=(__FILE__)[1]==":";
(também 22 bytes ) funciona no PHP 7; mas isso ocorre porque os parênteses copiam o valor da constante para uma variável temporária.
27 bytes : <?=stripos(PHP_OS,win)===0;
testa se a PHP_OS
constante predefinida começa com win
(sem distinção entre maiúsculas e minúsculas; Windows, WIN32, WINNT, mas não CYGWIN ou Darwin); imprime 1
para Windows, senão nada.
17/18 bytes :
<?=strlen("
")-1;
imprime 1
se foi armazenado com quebra de linha do Windows (também no DOS, OS / 2 e Atari TOS - embora eu duvide que alguém tenha compilado o PHP para o TOS) 0
.
Você também pode verificar a constante PHP_EOL
.
mais opções:
PHP_SHLIB_SUFFIX
está dll
no Windows, mas não necessariamente lá.
php_uname()
retorna informações sobre o sistema operacional e muito mais; começa com Windows
para Windows.
$_SERVER['HTTP_USER_AGENT']
conterá Windows
quando chamado em um navegador no Windows.
<?=defined(PHP_WINDOWS_VERSION_BUILD);
(38 bytes) funciona em PHP> = 5.3
conclusão
A única maneira segura de dizer se é realmente o Windows, não algo parecido, parece ser uma verificação do nome do sistema operacional. Para PHP: php_os()
pode ser desativado por motivos de segurança; mas PHP_OS
provavelmente sempre conterá as informações desejadas.