elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [RESUELTO][PowerShell] Ejecución de código PowerShell dentro de archivo Batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [RESUELTO][PowerShell] Ejecución de código PowerShell dentro de archivo Batch  (Leído 2,906 veces)
reconFito

Desconectado Desconectado

Mensajes: 31


Ver Perfil
[RESUELTO][PowerShell] Ejecución de código PowerShell dentro de archivo Batch
« en: 22 Abril 2024, 21:41 pm »

Buenas, saludos a todos.
Tengo una consulta con referencia a la primera línea del script a continuación, ¿Quisiera saber de qué manera está siendo interpretada por el prompt de CMD?
Y como es posible que funcione, ya que si quito el espacio que se encuentra entre # y : el script deja de funcionar. Cualquier explicación que me puedan brindar se las agradecería.

Código
  1. <# :
  2. @echo off
  3. PowerShell.exe -c "iex $([System.IO.File]::ReadAllText('%~f0'))"
  4. goto:EOF
  5. #>
  6. write hello
  7.  

Gracias


« Última modificación: 23 Abril 2024, 07:07 am por reconFito » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.159



Ver Perfil
Re: [DUDA][PowerShell] Ejecución de código PowerShell dentro de archivo Batch
« Respuesta #1 en: 23 Abril 2024, 03:08 am »

Yo tengo entendido de que es por un comportamiento raro de los tantos que tiene Batch, en tu caso el redireccionador < siempre se "mueve" o ejecuta al final, para batch estás intentando redireccionar el contenido del archivo # para que sea procesado por el comando :, : sirve para poner etiquetas o comentar instrucciones, al final para batch quedaría así:

Código
  1. :<#

Se termina comentando a sí misma y no hace nada XD, aunque en realidad se convierte en una etiqueta, quizá sea mejor usar :: en lugar de : pero como no va a entrar en conflicto con otra posible etiqueta ni se la está llamando no debería haber problemas. Yo pienso que es así porque hay una técnica para hacer un Echo sin el salto de línea final:

Código
  1. <Nul Set/P="Hola mundo"

Lo lógico sería pensar en que primero se ejecuta set/p="Hola mundo" y luego para evitar interacción entra en juego <nul haciendo que set/p trabaje como un simple Echo sin salto de línea, además es completamente equivalente a:

Código
  1. Set/P="Hola mundo" <nul

El espacio entre # y : es necesario porque sirve de separador entre el redireccionador+nombreDeArchivo (<#) del comando :, si están juntos es equivalente a no poner el comando y dará error

Doy por hecho de que no tienes problemas con las formas de comentarios de PowerShell

---
Por cierto, puedes reducir más el script combinando los tantos métodos de PowerShell Batch wrapper que hay en línea, por ejemplo este:

Código
  1. # & @Cls & PowerShell gc '%~f0'^|iex & Exit/B
  2. write hello

Para este caso Batch piensa que # es un comando o programa pero como no existe da una advertencia/error que desaparece inmediatamente con el @Cls, útil este método si la intención del Batch es únicamente llamar a PowerShell junto con toodas sus instrucciones y nada más, y está demás decir que para PowerShell # implica un comentario de una sola línea


En línea

reconFito

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: [DUDA][PowerShell] Ejecución de código PowerShell dentro de archivo Batch
« Respuesta #2 en: 23 Abril 2024, 07:06 am »

Gracias por tú respuesta, entendí algo de tú explicación, voy a investigar un poco más al respecto, pero por el momento me basta.

Ahora que ya se buscar (Powershell Batch Wrapper) creo que será más fácil, por cierto conoces algunos recursos donde pueda profundizar en este tipo de temas y trucos en CMD y Powershell, se que aquí tienen recursos pero nunca esta demás complementar con otras fuentes.

Gracias nuevamente.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda Script batch/powershell
Scripting
ruvenhr 9 5,015 Último mensaje 17 Junio 2013, 10:39 am
por ruvenhr
Script en powershell para abrir un archivo .db y exportarlo a csv su contenido
Windows
santiago.corso 0 1,808 Último mensaje 22 Agosto 2018, 19:54 pm
por santiago.corso
¿CMD, PowerShell, Python es capaz de leer un archivo.dll de C++ nativo?
Scripting
Meta 0 2,240 Último mensaje 20 Junio 2020, 02:41 am
por Meta
Ayuda de powershell para operaciones dentro de Batch
Scripting
rafaeljoseyepez 1 2,776 Último mensaje 22 Junio 2020, 02:51 am
por EdePC
Descargar un archivo con scp a través de PowerShell
GNU/Linux
MA40 1 4,889 Último mensaje 16 Septiembre 2022, 22:25 pm
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines