Post a reply

Options
Add an Attachment

If you do not want to add an Attachment to your Post, please leave the Fields blank.

(maximum 10 MB; please compress large files; only common media, archive, text and programming file formats are allowed)

Options

Topic review

martin

@D3abL3: I do not think this works. Please post some logs if you believe otherwise.
D3abL3

Hello.
I found this issue and fixed it with simple console command on WinSCP
mv /media/EXCLUSIVO_DISNEY/*/*.* /media/EXCLUSIVO_DISNEY/

this will read all folders inside /media/EXCLUSIVO_DISNEY/ and move all files inside every folder into /media/EXCLUSIVO_DISNEY
martin

Re: Move all files (only files not subdirs) in current directory

Your original question was about mv. So it seems that you have completely changed topic.

Your solution with iterating folders in a batch file is correct.
You can do the same in PowerShell. I do not have an example handy. Will consider creating one.

Regarding the *.* mask, see https://winscp.net/eng/docs/file_mask#exceptions
MarkZZZ

Re: Move all files (only files not subdirs) in current directory

Ok so I figured out a solution to this problem – I had to create batch file that iterates through each of the subfolders and then calls a winscp.exe script to send only the files.

The contents of the batch file is as follows:
cd C:\test2
for /D /r %%i in (*) do (
cd %%i
"C:\Program Files\winscp556\winscp.exe" /console /script="C:\Program Files\winscp556\UploadScript.txt"
)

and the contents of the upload script are basically:
option batch on
option confirm off
open user:password@sftp.somesite.com  -hostkey="ssh-rsa 2048 xx:xx:xx:xx:xx:xx"
option transfer binary
put -filemask="|*/" *.txt>24H
close
exit

If there is a better way (PowerShell preferred) I'd love to see the example code!

Thanks,
Mark
MarkZZ

Re: Move all files (only files not subdirs) in current directory

@martin: What would be the correct way to use the PowerShell TransferOptions? I have a script that I need to upload only the text files from a directory tree and dump them all into one folder on the destination server rather than mirror the directory tree. The following setup seems to send only text files but also mirrors the directory tree:
# Upload files
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$transferOptions.filemask = "*.txt"
 
$transferResult = $session.PutFiles("c:\test2\", "/Home/*", $False, $transferOptions)

Any advice?
frustrated

meh

Part of the issue is that sub-directories that don't match the filemask are moved
mv *.* /some/other/dir/

shouldn't move anything that doesn't have a period on the name.
Sub-directories without a period in the name are moved.

This is also true for the get command.
frustrating
martin

Re: Move all files (only files not subdirs) in current directory

It's not possible with scripting. But you can easily do this from PowerShell via WinSCP .NET assembly.
andresp

Move all files (only files not subdirs) in current directory

I was hoping
mv *.* newDirectory/

would do it, but that also moves the directories in the current directory.

Is there any way to move only the files?
Thanks