Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#5711
Cita de: OscarCadenas_91 en  3 Febrero 2015, 22:25 PM
Código (vbnet) [Seleccionar]

Shell("cmd.exe /c move /-y " & """" & "G:\" & ChrW(&HA0) & """" & " G:\Recuperado")

Buf...! Queda totalmente prohibido a partir de hoy utilizar Batch bajo .Net en este foro.

No, en serio, no utilices herramientas primitivas como la consola de Windows + comandos de Batch, es innecesario y no te aporta ningún control sobre dicha acción, prueba así:

Código (vbnet) [Seleccionar]
Imports System.IO

Código (vbnet) [Seleccionar]
Dim sourceFolder As String = Path.Combine("C:\", Convert.ToChar(160))
Dim destinyFolder As String = Path.Combine("C:\", "Recuperado")

Try
   Directory.CreateDirectory(sourceFolder) ' Creo la carpeta para reproducir el problema que has descrito.

   If Directory.Exists(sourceFolder) Then ' Si el directorio existe...
       ' Lo muevo.
       Directory.Move(sourceFolder, destinyFolder)
   End If

Catch ex As Exception
   Throw

End Try


saludos
#5712
Cita de: morganfreeman en  3 Febrero 2015, 20:30 PM
Lamentablemente este exe necesita de otros 3 exes para poder ejecutarse, pero te lo paso igual.

https://mega.co.nz/#!rEUiRLYT!jy0dVaQiqQ8rf-1SGf_gvks5JqOYnywHvmyMy8vam0c

Si no puedo ejecutarlo en condiciones no puedo evaluarlo e intentar solucionarlo en Batch u otro lenguaje.

Lo he testeado en dos VMs pero el debugger registra un error (de lectura de memoria) antes de que el programa pueda cargar la UI:
An Access Violation in module L2NPC.exe at 0033:0046adaf.
Read from location 00000a00 caused an access violation.


¿Es un programa comercial?, ¿no hay una url de descarga ni dispones de un paquete de instalación?.

Saludos
#5713
Scripting / Re: ayuda
4 Febrero 2015, 01:41 AM
Cita de: Nac-ho en  3 Febrero 2015, 22:48 PMEso?

Creo que se refiere al cliente de Outlook para escritorio.




El compañero @Shell Root ya te ha explicado lo necesario, pero te lo muestro traducido a Batch:

Código (dos) [Seleccionar]
Start /Wait "Titulo" "C:\Carpeta\Outlook.exe" /safe

Saludos
#5714
Cita de: MCKSys Argentina en  4 Febrero 2015, 01:10 AMNo sé si se puede distinguir entre "agregar" y "modificar" lo ya escrito...

Depende de como se mire, porque obviamente no te refieres a "modificar" para hacer correcciones ortográficas, por poner un ejemplo, te refieres a alguien que publicase contenido no ético/ilegal y luego lo eliminase, o que insultase a otro usuario y luego eliminase sus insultos, ¿ese tipo de modificaciones?, y por ende, con esta medida de seguridad sería más facil resolver conflictos y sancionar a los culpables,
si es algo necesario tomar estas medidas pues es necesario y no se hable más, lo extraño es saber que se ha tenido que imponer esta restricción al haber tanta gente que actue de esa forma, desconocía el problema.

Saludos!
#5715
Hola

Una pregunta, Álex, o quien pueda resolvérmela, ¿el mismo límite ha sido impuesto en el resto de secciones aparte del subforo de Noticias?,
lo comento porque me están llegando mensajes de usuarios que no pueden editar sus posts en las secciones de programación/scripting (para actualizar sus códigos, me imagino).

PD: Cuanto daño va a hacer este nuevo cambio xD.

Saludos!
#5716
Cita de: OscarCadenas_91 en  3 Febrero 2015, 20:20 PM
Sobre lo de Renombrar el nombre de la carpeta, lo eh intentado, asì:
Código (vbnet) [Seleccionar]
 My.Computer.FileSystem.RenameDirectory("G:\" & " ", "Carpeta2")

Claro que no lo reconoce, estás usando un caracter de espacio, no el caracter Unicode que has comentado.

Pero a lo que me refiero es que renombres la carpeta desde el Explorer, de forma manual.
¿Porque lo quieres renombrar desde Vb.Net? (utiliza el nombre real de la carpeta para renombrarla)

saludos
#5717
Cita de: lnvisible en  3 Febrero 2015, 19:20 PMLos que recomiendan otros lenguajes

Son gente muy rara, pregúntales por sus ideas políticas.

Hay muchas cosas con las que estoy en desacuerdo y pueden ser desmentidas, pero respeto tu opinión y no quiero entrar en discusiones, me limito a resaltar ese comentario, porque creo que deberías incluir un apartado para los desarrolladores de C#, y VB.Net, ya que tal y como lo dejas quien lo lea va a pensar erroneamente que dichos lenguajes no están dentro de los lenguajes más destacados de hoy en día, ni de los más usados, ni de los más populares, ni de los mejores.

:P

Saludos!
#5718
Cita de: OscarCadenas_91 en  3 Febrero 2015, 18:42 PMestaban ocultos los archivos y crei que igual deberia listar los archivos sin importar los atributos de oculto

Efectivamente, la función GetFiles lista los archivos sin importar sus atributos.

No es necesario realizar cambios, aunque debo decir que para simplificar el código puedes utilizar el overload del método My.Computer.FileSystem.GetFiles que acepta un array de extensiones, en lugar de realizar dos búsquedas distintas como estás haciendo ...eso es algo innecesario:

Código (vbnet) [Seleccionar]
Imports Microsoft.VisualBasic.FileIO

Public Class TestForm

   Private Sub TestForm_Shown() Handles MyBase.Shown

       Dim folderPath As String = "C:\"
       Dim fileExts As IEnumerable(Of String) = {"*.docx", "*.pptx"}
       Dim filePaths As IEnumerable(Of String)
       Dim lvItems As IEnumerable(Of ListViewItem)

       Try
           filePaths = From filePath As String In My.Computer.FileSystem.GetFiles(folderPath,
                                                                                  SearchOption.SearchAllSubDirectories,
                                                                                  fileExts.ToArray)
       Catch ex As Exception
           Throw

       End Try

       lvItems = From filePath As String In filePaths
                 Select New ListViewItem(filePath)

       With Me.ListView1
           .BeginUpdate()
           .Items.AddRange(lvItems.ToArray)
           .EndUpdate()
       End With

   End Sub

End Class



Aunque realmente deberías utilizar el método Directory.GetFiles en lugar de usar los métodos del namespace My, el cual carece del overload para asignar múltiples extensiones, pero sigue siendo mejor, ejemplo:

Código (vbnet) [Seleccionar]
Imports System.IO

Public Class TestForm

   Private Sub TestForm_Shown() Handles MyBase.Shown

       Dim folderPath As String = "C:\"
       Dim fileExts As IEnumerable(Of String) = {"docx", "pptx"}
       Dim fInfoCol As IEnumerable(Of FileInfo)
       Dim lvItems As IEnumerable(Of ListViewItem)

       Try
           fInfoCol = GetFiles(folderPath, fileExts, SearchOption.AllDirectories)

       Catch ex As Exception
           Throw

       End Try

       lvItems = From fInfo As FileInfo In fInfoCol
                 Select New ListViewItem(fInfo.FullName)

       With Me.ListView1
           .BeginUpdate()
           .Items.AddRange(lvItems.ToArray)
           .EndUpdate()
       End With

   End Sub

   ''' <summary>
   ''' Retrieves the files inside a directory,
   ''' containing the specified file extensions.
   ''' </summary>
   ''' <param name="folderPath">The directory path where to search files.</param>
   ''' <param name="fileExts">The file extensions to match.</param>
   ''' <param name="searchOption">The searching mode.</param>
   ''' <returns>IEnumerable(Of FileInfo).</returns>
   Public Shared Function GetFiles(ByVal folderPath As String,
                                   ByVal fileExts As IEnumerable(Of String),
                                   ByVal searchOption As SearchOption) As IEnumerable(Of FileInfo)

       ' Set all the file extensions to lower-case and
       ' Remove empty file extensions and
       ' Remove "*" and "." chars from beginning of the file extension.
       fileExts = From fileExt As String In fileExts
                  Where Not String.IsNullOrEmpty(fileExt)
                  Select fileExt.TrimStart({"*"c, "."c, " "c}).TrimEnd.ToLower

       Return From filePath As String In Directory.GetFiles(folderPath, "*", searchOption)
              Where If(Not String.IsNullOrEmpty(Path.GetExtension(filePath)),
                       fileExts.Contains(Path.GetExtension(filePath).TrimStart("."c).ToLower),
                       Nothing)
              Select New FileInfo(filePath)

   End Function

End Class





Sobre el problema en cuestión, el método que te da error lo hace por causa de un desbordamiento de la pila, el motivo no lo se, no debería suceder, seguramente el caracter que has comentado esté implicado en el error al ser un caracter ilegal para una carpeta y una vulnerabilidad de la que algunos virus se aprovechan, eso es lo que puede estar ocasionando dicho desbordamiento de alguna manera, el reconocimiento de esa carpeta.

¿No puedes simplemente renombrar la carpeta a otro nombre?.

Saludos
#5719
Cita de: morganfreeman en  3 Febrero 2015, 18:46 PM
Hola, antes que nada muchas gracias por responder!
L2NPC.exe tiene una interfaz gráfica, cuando lo ejecuto en forma manual se abre una ventana que muestra lo que se esta ejecutando.
Este programa es muy inestable, razones que no vienen al caso.
Se cierra 2 o 3 veces al dia, lo que necesito con un batch, es que cuando se cierre, lo vuelva a abrir.

Me parece que es un problema particular del exe, ya que cuando lo inicio manualmente, este se ejecuta bien y queda prendido en su interfaz grafica y aparece en la lista del Administrador de Tareas, pero cuando lo ejecuta el batch, este SI aparece en la lista del Administrador de tareas, pero no aparece su interfaz grafica.

¿Puedes compartir el exe o una url de descarga, para analizarlo mejor?

saludos!
#5720
El ejercicio te está indicando que uses argumentos:

test.bat
Código (dos) [Seleccionar]
@Echo OFF

Set "fileExt=", "sourceDir=", "outputDir="

If "%~1" NEQ "" (Set "fileExt=%~1")
If "%~2" NEQ "" (Set "sourceDir=%~2")
If "%~3" NEQ "" (Set "outputDir=%~3")

REM comprobar si sourceDir existe
REM comprobar si outputDir existe

Copy /y "%sourceDir%\*.%fileExt%" "%outputDir%\"
REM Comprobar si hubo errores
REM If %ERRORLEVEL%...

Pause&Exit /B 0


Modo de empleo:
test.bat "doc" "C:\source" "C:\destiny"

saludos