Saltar al contenido

Diagonal invertida en cmd

diciembre 24, 2021
Diagonal invertida en cmd

Barra diagonal o barra invertida para la ruta de archivos en python

Parece que Windows insiste en escribir una barra diagonal inversa en las rutas de archivos, mientras que la clase URI de .NET las escribe con una barra /. ¿Hay alguna forma correcta, que sea aceptada incluso en los sistemas más primitivos? ¿Y por qué el URI de .NET muestra la otra barra en comparación con el resto de Windows?

La razón es histórica. Ni siquiera Windows puede invertir nuestra forma de pensar sobre las URL. Cuando se habla de barras invertidas, la única plataforma que se encuentra que las utiliza es Windows (y algunas otras novedosas).

En cuanto a los separadores de ruta del sistema de archivos, creo que en Windows todas las APIs aceptan las barras diagonales (pero quizás hay algunas con errores que no las aceptan) – el problema es que la mayoría de las aplicaciones no las aceptan (o las analizan incorrectamente).

De hecho, si no recuerdo mal, incluso MS-DOS aceptaba ‘/’ como separador de rutas a nivel de API desde que empezó a soportar subdirectorios (v2.0) – pero para entonces el carácter ‘/’ ya se había establecido como el carácter ‘switch’ para las opciones de la línea de comandos, así que la barra invertida se convirtió en el separador de rutas de facto en DOS (y más tarde en Windows).

Barra oblicua en cmd

Dentro de una sentencia de bloque (una serie de sentencias entre paréntesis), todo el bloque es analizado y luego ejecutado. Cualquier %var% dentro del bloque será reemplazado por el valor de esa variable en el momento en que se analiza el bloque – antes de que se ejecute el bloque – lo mismo se aplica a un bloque FOR … DO (bloque).

Dos formas comunes de superar esto son 1) usar setlocal enabledelayedexpansion y usar !var! en lugar de %var% para acceder al valor cambiado de var o 2) llamar a una subrutina para realizar un procesamiento posterior usando los valores cambiados.

La segunda es la variable de entorno común f que se establece mediante la sentencia set «f=…». Se puede acceder a esta variable utilizando %f%, pero dentro de un bloque, parecerá que mantiene el valor que tenía cuando se analizó el controlador (de hecho, cualquier %var% se sustituye en el momento de la interpretación por el valor de var en ese momento)

las metavariables no pueden usarse en sentencias de manipulación de cadenas como substrings o sustituciones, sólo las variables de entorno comunes pueden usarse para estas operaciones, por lo que es necesario asignar el valor de la metavariable f a la variable de entorno f y luego realizar la tarea de sustitución de cadenas de la variable de entorno f.

Barra diagonal en linux

Antes estaba bien, pero después de la última actualización todas las barras invertidas se muestran como el símbolo de yen en la consola de línea de comandos. Se sigue mostrando correctamente en todas las demás partes, ¿alguna idea de cuál puede ser la causa y cómo solucionarlo? Así es como la barra invertida se muestra en la interfaz de línea de comandos frente a un archivo de texto:

Unicode es un estándar de codificación de caracteres, desarrollado por el Consorcio Unicode, que define un conjunto de letras, números y símbolos que representan casi todos los idiomas escritos del mundo. Su éxito en la unificación de conjuntos de caracteres ha llevado a su uso generalizado en la creación de programas informáticos.

¿Qué importancia tiene Unicode? Cuando se habla de un software escrito en un idioma con un conjunto de caracteres específico (por ejemplo, el chino) que se espera que funcione y se muestre correctamente en un ordenador con un sistema operativo que utiliza un conjunto de caracteres completamente diferente (por ejemplo, Windows en inglés). El ejemplo contrario es igualmente válido: un software escrito en inglés, que utiliza caracteres latinos, que se espera que funcione y se muestre correctamente en un ordenador con Windows en chino. En estas situaciones, dependiendo de cómo se haya codificado la aplicación, puede ocurrir que no todos los caracteres de la interfaz de la aplicación se muestren correctamente, convirtiéndose en una molestia.

Barra oblicua en la ruta de windows

dbenham señala que el problema está presente independientemente de si los espacios están en un nombre de directorio, por lo que eliminó la referencia a ella en el título y el cuerpo de la pregunta. También se ha añadido un ejemplo de ‘cd ./’ que funciona, mientras que otros comandos no lo hacen.

Independientemente de que se suponga que Windows CMD.EXE admite barras inclinadas en las rutas, el hecho es que a veces funciona, a veces no, y a veces parece que funciona pero da un resultado erróneo, es decir, un error.

Se puede debatir si el CMD de Windows «se supone» que soporta las barras inclinadas. Pero este último resultado es un error. Incluso si hay un error del operador en el uso de una barra diagonal, Windows no debería dar ese resultado.

No estoy seguro de por qué la ‘/’ funciona en PS. Volviendo a la historia, DOS se basó en UNIX y es un pequeño conjunto de UNIX. En UNIX el separador de ruta es ‘/’, mientras que en DOS es ‘\’. He trabajado en algunas aplicaciones de Windows y DOS antes. Para convertir algunos patrones de UNIX como comandos o rutas y asegurarme de que son válidos para DOS, escribí un pequeño convertidor para transformar ‘/’ en ‘\’ así:

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad