2010-04-03 8 views
8

Pregunta¿Cuáles son las razones para usar dos programas por lotes en Windows?

¿Cuál sería una buena razón (idealmente, técnica) para programar alguna vez alguna tarea no trivial en el lenguaje dos lotes en un sistema Windows moderna en contraposición a la descarga ya sea PowerShell, o ActiveState Perl?

Para ser más específicos, hago las siguientes dos supuestos para la duración de esta pregunta: ¿

  • cualquiera lo suficientemente técnico para ser capaz de escribir un guión de mediana complejidad lote es suficiente técnica para instalar cualquiera de los intérpretes de scripting.

  • Ninguno de estos dos presenta una curva de aprendizaje suficiente para las tareas básicas de reemplazo de lotes, ya que dicha curva superaría el dolor de realizar cualquier tarea remotamente no trivial en lote.

Notas

  • "Se necesita un programa por lotes para autoexec.bat" no es una razón válida. Su autoexec.bat puede consistir en simplemente llamar a secuencias de comandos no por lotes.

  • Si no está de acuerdo con cualquiera de mis 2 suposiciones anteriores, está bien, y puedo estar equivocado. Pero mi pregunta es específicamente "asumiendo que esas 2 suposiciones son correctas, ¿cuál sería la razón para seguir con el lote?" Si hace más fácil suspender la incredulidad (en caso de que no esté de acuerdo conmigo), agregue una tercera suposición de que la pregunta se limita a personas que ya poseen al menos un poco de experiencia en PowerShell o Perl.

    Para reiterar: esto no pretende ser una pregunta subjetiva sobre lo fácil que es aprender PSh o ASPerl en comparación con hacer una codificación por lotes avanzada. Esa es una pregunta separada que es demasiado subjetiva para ser molestada en este post.

Antecedentes:

Yo solía hacer un poco de programación por lotes bastante complicado en los días mayores, y recordar por lotes como uno de los peores lenguajes de programación es posible que me había encontrado.

La idea de esta pregunta vino después de ver un montón de preguntas por lotes en SO, y tratando de asimilar la respuesta de uno de ellos por pura curiosidad y renunciar al dolor después de un minuto, exclamando mentalmente "¿por qué iría alguien? a través de este dolor en lugar de hacer eso en 1 línea de Perl? " :)

Mi propia respuesta plausible

supongo que puede haber un sistema compatible con DOS probable, que tiene DOS intérprete, pero no tiene PowerShell compatible o Perl ... No estoy al tanto de uno pero no completamente imposible.

+1

Tenga en cuenta que el DOS (command.com) y Windows (cmd.exe) Las conchas de línea de comando son dos mundos * muy * diferentes. Para todos los propósitos prácticos, esos dos solo comparten un poco de sintaxis, pero nada más. 'autoexec.bat' tampoco existe desde hace bastante tiempo. A menos que todavía ejecute DOS o Windows 9x. – Joey

+0

@Johannes - Hmmm ... Todavía veo autoexec.bat en todas mis instalaciones de XP, aunque nunca tuve que poner nada allí, así que no sé si funciona :) – DVK

+0

Está ahí para aplicaciones antiguas que esperan que esté allí . Lo mismo con config.sys. Por lo general, están vacíos. Windows hace algo de magia con las variables de entorno que se establecen en 'autoexec.bat' y las establece en Windows (las configuraciones de los programas de DOS establecen regularmente' PATH' u otras variables para que puedan funcionar correctamente). Aparte de eso, esos archivos ya no tienen uso y eso es solo un poco de compatibilidad con versiones anteriores. – Joey

Respuesta

13

Normalmente, la razón fundamental es que necesita que la secuencia de comandos se ejecute en una máquina que no tiene otro intérprete y en la que no tiene permitido instalar un intérprete. Los servidores de producción en muchas compañías son un buen ejemplo: usted quiere que tengan la menor cantidad posible de vectores de explotación, lo que significa que no hay lenguajes de scripting que no sean necesarios para la funcionalidad de la aplicación.

Tienes razón cuando dices que el lenguaje de los lotes es un lenguaje terrible; hay una razón por la que han invertido tiempo y dinero en crear PowerShell, pero también es el único lenguaje universal en el que puedes confiar en las innumerables versiones de Windows.

+2

Hmm ... supongo Estoy tan poco acostumbrado a ver "producción" y "Windows" en la misma frase, tener toda mi vida en el mundo de Unix/Linux en cuanto a producción, ni siquiera pensé en eso. +1 – DVK

+4

Sorprendentemente, de hecho, hay empresas que usan Windows como plataforma de servidor. A veces incluso funciona. –

+0

Diablos, nuestra compañía sí. Acabo de tener la buena (supongo) fortuna de nunca tocar ese lado de la Fuerza en el trabajo. Lo más cercano que vine fue ser un administrador de NETWARE en los días universitarios :) – DVK

9

Porque trabajo en un banco donde el navegador predeterminado es IE6 en Windows XP y no tengo idea si podré instalar PowerShell en la computadora de alguien y tengo un archivo por lotes que pueden usar rápida y fácilmente :

sqlcmd with some pre-import SQL 
bcp 
sqlcmd with some post-import SQL 

con todo el lote necesidad de estar RUNA/netonly debido a que la estación de trabajo no participa en el dominio que el servidor SQL Server está en/fideicomisos.

No

que me queje ni nada ...

Y yo diría que no son triviales porque a veces se toman parámetros y requieren algún escape bastante loco citando.

5

Tengo un contrato en una empresa de servicios públicos importante que no permite programas no aprobados en sus computadoras. Eso se esperaría de las computadoras conectadas a las redes más internas que se conectan entre las computadoras y los dispositivos de control, pero la prohibición también se aplica a las redes administrativas y de propósito general.

El sistema operativo aprobado es Windows XP SP3 con IE6. La actualización no está permitida hasta que el soporte técnico la bendiga. Lo cual, parece, aún puede ser dentro de unos años.

Por lo tanto, los archivos por lotes son la única herramienta de scripts general disponible. Algunas máquinas de desarrollo tienen acceso a compiladores de C++, pero los programas resultantes no están permitidos para la distribución interna hasta la conclusión de un esfuerzo de validación (probable de varios años).

+3

Entonces, ¿permiten scripts por lotes no validados pero no códigos C++ no validados con idéntica funcionalidad? Triste pero no sorprendente :) – DVK

+1

Shhhh! No me sorprendería en lo más mínimo si agregaran una prohibición para * los archivos por lotes no aprobados *, si se dieran cuenta de ellos. – wallyk

+0

lo haces sonar como que sería una mala cosa? La próxima vez que tu electricidad se apague por un día porque algunos Yahoo corrieron un código malicioso no probado en la red de la compañía eléctrica, estoy seguro de que querrás peores que simplemente obligar a su código a revisar el código a partir de ese momento ... – DVK

2

También puede optar por usar vbscript o jscript en lugar de perl y no tendrá que preocuparse por instalar ningún software adicional.

+0

Hecho eso con JScript. – Axeman

+3

Sin embargo, Windows Script Host puede estar deshabilitado con políticas de grupo. – Joey

0

diversas razones

  1. Su política de la empresa, ya sea por seguridad o por otras razones ilógicas dados por la administración, que estrictamente uso de DOS.
  2. Debes admitir algunas secuencias de comandos heredados de DOS ya escritas.
  3. Usted o los administradores de la empresa solo conocen el DOS y no tienen capacidad para aprender otros idiomas.
  4. Usted está codificando para una parte de un programa más amplio DOS ya escrito
  5. Hacer las cosas de la manera "más duro" que usted mira fresco.
  6. usted tiene un montón de tiempo en sus manos para idear soluciones para algunos cosas que son difíciles de hacer fácilmente con el DOS
+3

Tengo serias dudas de que el DOS sea un problema en cualquier lugar actualmente. Hemos pasado ese tiempo por más de una década y ni siquiera existe en Windows de 64 bits. – Joey

Cuestiones relacionadas