Hello,
Would it be possible to have a command line command to load multiple input files that are listed in a text file (just a filename per row) ?
Br,
Jukka
Command line; loading multiple files from a list file
-
- Posts: 10
- Joined: Fri Nov 30, 2018 12:55 pm
-
- Posts: 187
- Joined: Tue Mar 05, 2019 3:59 pm
Re: Command line; loading multiple files from a list file
you can, there are a number of different ways to do it here is one example in a .bat on windows. this is a script I use to ping a bunch of ip address in a standalone text file
and here is a couple lines of that file with IPaddresses and server names scrubbed
The problem with this method in my mind is it is only loading one file at a time and loading CloudCompare and unloading it after each iteration
There are other ways to just have it group up the first item into a concated string and do all at once but I don't have any readily available demos, but I have done something like it with powershell before.
actually just search google for how to ping ip addresses listed in a standalone file and you will get examples for Powershell, batch, bash, just about any way you would want, they aren't specific to CloudCompare but there are a lot more people who need to ping then use CloudCompare
Code: Select all
@echo off
setlocal enabledelayedexpansion
set OUTPUT_FILE=.\result.txt
>nul copy nul %OUTPUT_FILE%
for /f "tokens=1,*" %%i in (.\IPAddressList.txt) do (
set SERVER_ADDRESS=ADDRESS N/A
for /f "tokens=1,2,3" %%x in ('ping -n 1 %%i ^&^& echo SERVER_IS_UP') do (
if %%x==Pinging set SERVER_ADDRESS=%%y
if %%x==Reply set SERVER_ADDRESS=%%z
if %%x==SERVER_IS_UP (set SERVER_STATE=UP) else (set SERVER_STATE=DOWN)
)
echo %%j [!SERVER_ADDRESS::=!] is !SERVER_STATE! >>%OUTPUT_FILE%
echo %%j [!SERVER_ADDRESS::=!] is !SERVER_STATE!
)
Code: Select all
192.168.1.1 ServerName_1
192.168.1.2 Servername_2
There are other ways to just have it group up the first item into a concated string and do all at once but I don't have any readily available demos, but I have done something like it with powershell before.
actually just search google for how to ping ip addresses listed in a standalone file and you will get examples for Powershell, batch, bash, just about any way you would want, they aren't specific to CloudCompare but there are a lot more people who need to ping then use CloudCompare
Re: Command line; loading multiple files from a list file
This is possible with the qJsonRPCPlugin.
There is some example in the test directory of that plugin folder.
The example uses some simple Python code
i.e.
{"jsonrpc": "2.0", "method": "open", "params": {"filename": "/home/adib/Dokumente/teapot.ply"}, "id": 4}
this will also trigger the fileopen dialogue for setting options
or more specific
{"jsonrpc": "2.0", "method": "open", "params": {"filename": "/home/adib/Dokumente/teapot.ply", "filter":"PLY mesh (*.ply)", "silent":true, "name":"testpod", "parent":"one/two/three"}, "id": 4}
which sets some options and suppress the open dialogue
HTH, Adib.
--
There is some example in the test directory of that plugin folder.
The example uses some simple Python code
i.e.
{"jsonrpc": "2.0", "method": "open", "params": {"filename": "/home/adib/Dokumente/teapot.ply"}, "id": 4}
this will also trigger the fileopen dialogue for setting options
or more specific
{"jsonrpc": "2.0", "method": "open", "params": {"filename": "/home/adib/Dokumente/teapot.ply", "filter":"PLY mesh (*.ply)", "silent":true, "name":"testpod", "parent":"one/two/three"}, "id": 4}
which sets some options and suppress the open dialogue
HTH, Adib.
--
-
- Posts: 15
- Joined: Sun Feb 28, 2021 9:06 am
Re: Command line; loading multiple files from a list file
We did it without a file list. All files are in folders and have the same ending/ file type.
It took a while for a non windows script experienced user, but works smooth and perfectly.
Code: Select all
for %%f in (f:\LAS\Abschnitt_1_FR_1\*.las) DO "C:\Program Files\CloudCompare\cloudcompare.exe" -SILENT -O -GLOBAL_SHIFT AUTO %%f -C_EXPORT_FMT LAS -NO_TIMESTAMP -SS SPATIAL 0.01
for %%f in (f:\LAS\Abschnitt_1_FR_2\*.las) DO "C:\Program Files\CloudCompare\cloudcompare.exe" -SILENT -O -GLOBAL_SHIFT AUTO %%f -C_EXPORT_FMT LAS -NO_TIMESTAMP -SS SPATIAL 0.01
Regards Sebastian
-
- Posts: 10
- Joined: Fri Nov 30, 2018 12:55 pm
Re: Command line; loading multiple files from a list file
Thanks for comments! I should have been more spesific; I can already batch process multiple files one by one, but what I'm looking for is a simple way to load 1...n E57 files in a one command ( to one instance of CC) and merge them all together, subsample and export one file.
It can be done by producing a command line like this:
-O file1.e57 -O file2.e57 ....
..but I'd rather open just point to one file that has a path to each file per line.
It can be done by producing a command line like this:
-O file1.e57 -O file2.e57 ....
..but I'd rather open just point to one file that has a path to each file per line.
-
- Posts: 15
- Joined: Sun Feb 28, 2021 9:06 am
Re: Command line; loading multiple files from a list file
Therefore thejukka.alander wrote: ↑Mon Mar 15, 2021 1:54 pm Thanks for comments! I should have been more spesific; I can already batch process multiple files one by one, but what I'm looking for is a simple way to load 1...n E57 files in a one command ( to one instance of CC) and merge them all together, subsample and export one file.
It can be done by producing a command line like this:
-O file1.e57 -O file2.e57 ....
..but I'd rather open just point to one file that has a path to each file per line.
Code: Select all
-MERGE_CLOUDS
I think, at the moment there is no 'out of the box' solution for your issue. You can fill in an enhancement issue on GitHub and maybe a programer will take it. For my less C++ knowledge this is to far away at the moment.
Have you tried to grab the filenames with a skript or program like TotalCommander to insert the -O commands into a batch file?
Regards Sebastian
-
- Posts: 10
- Joined: Fri Nov 30, 2018 12:55 pm
Re: Command line; loading multiple files from a list file
Ok here's finally a windows batch script that loads all e57 files in the current folder, merges, subsamples and saves out to one e57. I might later on update it to read the filelist.
____________________
SETLOCAL EnableDelayedExpansion
cd /D %~dp0
set _filelist=
for /f "delims=|" %%f in ('dir /b "*.e57"') do (
set "_filelist=!_filelist! -O %%f"
)
set _filelist=%_filelist:,,=%
rem echo %_filelist% > filelist.txt
"C:\Program Files\CloudCompare\CloudCompare.exe" -silent %_filelist% -LOG_FILE .\log.txt -AUTO_SAVE off -MERGE_CLOUDS -SS SPATIAL 0.02 -C_EXPORT_FMT E57 -SAVE_CLOUDS
pause
____________________
____________________
SETLOCAL EnableDelayedExpansion
cd /D %~dp0
set _filelist=
for /f "delims=|" %%f in ('dir /b "*.e57"') do (
set "_filelist=!_filelist! -O %%f"
)
set _filelist=%_filelist:,,=%
rem echo %_filelist% > filelist.txt
"C:\Program Files\CloudCompare\CloudCompare.exe" -silent %_filelist% -LOG_FILE .\log.txt -AUTO_SAVE off -MERGE_CLOUDS -SS SPATIAL 0.02 -C_EXPORT_FMT E57 -SAVE_CLOUDS
pause
____________________
-
- Posts: 296
- Joined: Sat Jan 20, 2018 1:57 pm
Re: Command line; loading multiple files from a list file
@dreiländereck
thank you so much for this .bat its pure gold and has streamlined my process allowing to leave pc overnight
thank you so much for this .bat its pure gold and has streamlined my process allowing to leave pc overnight