PHP, 22 bytes
`<?=PATH_SEPARATOR>":";`
se imprime 1
si el separador de ruta es punto y coma (dos puntos o vacío para todos los demás sistemas operativos excepto DOS y OS / 2), de lo contrario, nada.
También 22 bytes , pero no es tan seguro:
<?=strpos(__FILE__,92);
imprime un entero positivo si la ruta del archivo contiene una barra invertida; de lo contrario nada.
Una alternativa segura con 27 bytes : <?=DIRECTORY_SEPARATOR>"/";
impresiones 1
o nada.
Un hallazgo extraño : <?=__FILE__[1]==":";
( 20 bytes ) debería ser, tampoco seguro, pero está bien. Pero aunque __FILE__
pretende ser una cadena (lo intenté var_dump
y gettype
), indexarlo arroja un error, a menos que lo copie en otro lugar (la concatenación también funciona) o lo use como un parámetro de función.
Editar:
<?=(__FILE__)[1]==":";
(también 22 bytes ) funciona en PHP 7; pero eso se debe a que los paréntesis copian el valor de la constante en una variable temporal.
27 bytes : <?=stripos(PHP_OS,win)===0;
comprueba si la PHP_OS
constante predefinida comienza con win
(mayúsculas y minúsculas; Windows, WIN32, WINNT, pero no CYGWIN o Darwin); impresiones 1
para Windows, de lo contrario nada.
17/18 bytes :
<?=strlen("
")-1;
imprime 1
si se almacenó con Windows linebreak (también en DOS, OS / 2 y Atari TOS, aunque dudo que alguien haya compilado PHP para TOS), de lo contrario 0
.
También puede verificar la constante PHP_EOL
.
mas opciones:
PHP_SHLIB_SUFFIX
está dll
en Windows, pero no necesariamente solo allí.
php_uname()
devuelve información sobre el sistema operativo y más; comienza con Windows
para Windows.
$_SERVER['HTTP_USER_AGENT']
contendrá Windows
cuando se llame en un navegador en Windows.
<?=defined(PHP_WINDOWS_VERSION_BUILD);
(38 bytes) funciona en PHP> = 5.3
conclusión
La única forma segura de saber si realmente es Windows, y no nada parecido, es verificar el nombre del sistema operativo. Para PHP: php_os()
puede deshabilitarse por razones de seguridad; pero PHP_OS
probablemente siempre contendrá la información deseada.