Muchos detalles, pero falta el más importante... ¿Para Linux o para Windows?, vale, acabo de leer lo del Notepad, a no ser que uses Wine para abrir el notepad en Linux me imagino que trabajs en Windows, haz el favor de especificar el detalle cuando formules preguntas.
Que windows trabaja a un nivel mas bajo que linux y tal...
Que Batch séa un "retrasado" no significa que la shell de Linux séa increíblemente superior a la de Windows, Windows además de Batch también dispone el uso nativo de VisualBasicScript, Jscript, y Powershell, puedes hacer de todo. Si no me equivoco Linux solo dispone de Bash como lenguaje nativo (No lo sé seguro pero...), así que tu me dirás.
Claro, no puedes iniciar un servicio que ya se encuentra iniciado, ni detener uno que ya está detenido.
De todas formas no dás ningún detalle acerca del error, solo dices que "falla", podrías haber mostrado la excepción porque no somos magos para adivinar lo que ocurre.
Pero deduzco que el problema es ese porque en tu código no compruebas el estado del servicio. solo puede ser eso, o que el servicio no se pueda detener por alguna dependencia.
Usa un convertidor online de VBNET a C# con esta función que hice, y listo:
Al final probando cosas he conseguido hacer el código:
Código:
@Echo OFF Setlocal enabledelayedexpansion
Set "Name=ElektroSoft" Set "Password=Elektro" Set "InitialDate=01/01/2013" Set "ExpireDate=01/01/2050" Set "SerialNumber=%Random%%Random%%Random%%Random%%Random%"
:: Make certificate makecert -r -pe -a sha1 -n "CN=%Name%" -b "%InitialDate%" -e "%ExpireDate%" -$ individual -sr LocalMachine -ss my -cy authority -# "%SerialNumber%" "%Name%.cer"
:: Export certificate For /F "Tokens=2 delims=:" %%# in ('certutil -store my') DO ( if "%%#" NEQ " CN=%Name%" (Set "SerialNumberHash=%%#") ELSE ( certutil -exportPFX -p "%Password%" my "!SerialNumberHash: =!" "%Name%.pfx" Pause&Exit))
:: Check certificate REM certutil -store my
:: Delete certificate REM certutil -delstore MY "%Name%"
No me gusta criticar los códigos de los demás pero te has pasado!, desde luego esa no es la manera de hacer las cosas bien...
Ya que vas a usar todo el alfabeto, te recomiendo que lo primero de todo definas el valor de cada letra y lo guardes en algún sitio...así lo tendrás más ordenado y mayor control si luego quieres cambiar algún número...
Ahora mismo no recuerdo la sintaxis que se debía usar para referirse a una carpeta sin nombre (una carpeta con nombre reservado de windows), pero poder, se puede eliminar desde la consola.
Aunque me parece mucho más sencillo y eficaz hacer lo siguiente: 1. Mover los archivos a una carpeta temporal (filtrando los archivos indeseados) conservando la estructura de las carpetas. 2. Formatear el pendrive (para eliminar la carpeta incompatible, y la basura). 3. Mover los archivos de nuevo al pendrive.
Si se tratase de un HDD no apoyaría lo de formatear para solucionar ese problema, pero siendo un simple USB... me parece lo más rápido.