Pregunta

I've done some initial searches here and couldn't find an answer that quite fits what I am trying to do here. I have basically inherited this batch script to handle a specific process of copying / moving / manipulating a set of files, and it was recently brought up that it does not work if the batch file is run from a directory that has spaces in it. I've narrowed the problem down to the following block, and cannot find the right way to replace it:

for /r %%f in (*.ext1) do (
  echo %%f
  my_tool.exe %%f %%f.ext2
  del /f /q %%f
)

So basically what should happen here is, my_tool takes two parameters, an input file and an output file. It does some processing to the input file, and outputs it as the same file, but with an additional .ext2 extension to it. (foo.ext1 becomes foo.ext1.ext2)

The problem is that %%f does not quote the fully qualified path to the file, so the tool is getting more parameters than it is expecting, and not in the proper formatting. Any suggestions would be greatly appreciated.

¿Fue útil?

Solución

Put paramenters in double quotes, so batch will transmit them to your tool as 2 paramenters:

for /r %%f in (*.ext1) do (
  echo "%%f"
  my_tool.exe "%%f" "%%f.ext2"
  del /f /q "%%f"
)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top