• 0

Batch file to run command on joining video files?


Question

I have a lot of movies that are 2 files and I want to join them into one file using Avidemux. Right now I've written a batch script to make it a little faster to join the 2 files like I put below. I have to update the "moviefinal" value, save the files, then run it. I have to do this each time with each movie though.

---------------------------

set avidexmuxprog="C:\Programs\avidemux\avidemux.exe"

set moviefinal=The 40 Year Old Virgin

set moviefile1=%moviefinal% - CD1

set moviefile2=%moviefinal% - CD2

%avidexmuxprog% --load "T:\Video\Movies\%moviefile1%.avi" --append "T:\Video\Movies\%moviefile2%.avi" --force-smart --save "C:\_COMBINED_AVI\%moviefinal%.avi" --quit

:end

---------------------------

I've tried putting this into a "for" loop, but the (set) doesn't like spaces in the names and using quotes messes it up too.

---------------------------

set avidexmuxprog="C:\Programs\avidemux\avidemux.exe"

set movie1="The Figher"

set movie2="The Fifth Element"

FOR /f "delims=," %%G IN (%movie1%,%movie2%) DO (%avidexmuxprog% --load "c:\test\%%G - CD1.avi" --append "c:\test\%%G - CD2.avi" --force-smart --save "c:\test\final\%%G.avi" --quit)

:end

---------------------------

Is there a way, in batch to have it automatically detect a file with the same name, but with the CD1/CD2 and then run the command for each file set that it finds in a directory?

I'm not too advanced in batch, but hoping there's a way to automate the entire process so I don't have to keep manually typing in the name.

24 answers to this question

Recommended Posts

  • 0

I looked into that program and it doesn't provide any better options than that of Avidemux. I still have to manually join the files.

I have about 100 or more movies that are (movie-Cd1.avi and movie-Cd2.avi) and want to join them into one file. Avidemux works very well, but have to manually choose 2 files to join, then rinse and repeat 100+ times.

  • 0

While it is certainly possible to do what you want in Batch, its really a pain. I recommend that you use a more suitable scripting language, of which there are many.

For example, I wrote a new version of your script in Perl that does what you requested. It is much nicer than its equivalent in Batch, and took me only a couple of minutes to write and test. All you should need to do is modify the @MOVIES_TO_CONVERT variable to list the movies you need to convert. Also, you can download ActivePerl for Windows if you don't already have Perl installed on your system.


#!/usr/bin/perl

use strict;

# Array of movies to convert
my @MOVIES_TO_CONVERT = ('The Figher', 'The Fifth Element', 'Robinhood Men In Tights');

# Directory where the split AVI files are stored
my $MOVIE_IN_PATH = 'T:\Video\Movies';

# Directory where the combined AVI files will be stored
my $MOVIE_OUT_PATH = 'C:\_COMBINED_AVI';

# Full path to the avidemux executable
my $AVIDEMUX = 'C:\Programs\avidemux\avidemux.exe';

for my $movie (@MOVIES_TO_CONVERT)
{
my $convert_cmd = "\"$AVIDEMUX\" --load \"$MOVIE_IN_PATH\\$movie - CD1.avi\" --append \"$MOVIE_IN_PATH\\$movie - CD2.avi\" --force-smart --save \"$MOVIE_OUT_PATH\\$movie.avi\" --quit";
print "$convert_cmd\n";
die "Unable to convert $movie!\n" if (system "$convert_cmd");
}
[/CODE]

If you save the script as [i]avijoin.pl[/i], or something else with the [i].pl[/i] file extension, ActivePerl should let you double-click to run it.

  • 0

That's awesome orangekiller. I've always wanted to mess with perl more and played with it a little in Debian before. This also gives me good examples to learn from. I'll get Active Perl and try it out since I'm in Windows.

  • 0

Another question for you Orange, what would this look like as a VBS script? Do you know VBS? Just looking for something else to learn from since I'm in a Windows environment and wanted to start messing with VBS instead of batch. I learn best from understand code in scripts that I'm actually trying to use in real life instead of a test book.

I'm installing ActivePerl now and trying out that script on 2 movies.

  • 0

Another question for you Orange, what would this look like as a VBS script? Do you know VBS? Just looking for something else to learn from since I'm in a Windows environment and wanted to start messing with VBS instead of batch. I learn best from understand code in scripts that I'm actually trying to use in real life instead of a test book.

I'm installing ActivePerl now and trying out that script on 2 movies.

Personally I prefer Perl because of its easy syntax and excellent cross-platform support. While I do know a little VBS, I generally try to avoid it. The best Windows-specific scripting language is AutoIt, in my opinion. It has excellent documentation, a great community, a featureful standard library, built-in WIN32 API integration, and any AutoIt script may be "compiled" to an executable so that it can be run on systems that don't have AutoIt installed.

If you are just getting started with these languages, I have a couple of book recommendations for you. Learning To Script with AutoIt V3 is an excellent AutoIt tutorial, probably the best available. Whether you are a novice or expert, that is the tutorial to read when you are first starting with AutoIt. If you are fairly new to programming in general, not just learning a new language, I definitely recommend that you read Beginning Perl. It is an excellent introduction to programming, and covers programming basics, good practices, and the Perl language all-in-one. (Disclosure: Since I am a competent C/C++ developer, I only skimmed the book, but read Perl for C Programmers when I learned Perl.)

  • 0

I looked into that program and it doesn't provide any better options than that of Avidemux. I still have to manually join the files.

I have about 100 or more movies that are (movie-Cd1.avi and movie-Cd2.avi) and want to join them into one file. Avidemux works very well, but have to manually choose 2 files to join, then rinse and repeat 100+ times.

Ohhh, yeah I see what you mean. That would take awhile alright.

Years ago before I found out about Ultra Video Joiner, I just never downloaded anything that was in more than one part, meaning I didn't get the best quality files.

After I got the program, I downloaded everything and joined them right away. Most were 2 parts, but some 3 and 4. Mostly porn to be honest, lol. : )

  • 0

I should have joined these files a long time ago. Was lazy because XBMC detects them and plays 2 files together just fine as long as they are like CD1 and CD2 and so on.

Wanted to get more extensive and use a new media manager and looks like I have to change how I format all my movies, but combining them and putting each movie into a sub folder. The media program does this all for me, but doesn't like more than one file for a movie. Was using Ember Media Manager-R, but now going full blown with Media Center Master since EMM/EMM-R isn't being updated really anymore. After playing with Media Center Master, it just seems like a smarter move anyways.

Funny how things work, been trying to do this script and now playing with perl and in the past hour I've been playing with PowerShell which is way cooler than I thought it was at first and found out it's replacing VBS pretty much.

I'm going to play with AutoIT more also. Thanks again Orange.

  • 0

I improved the Perl script I posted above. This version is capable of detecting unconverted movies in the input directory and joining them automatically. If you still want to manually control which movies get converted, you can assign their names to the @MOVIES_TO_CONVERT array like before, and the script will use those instead of auto-detection. (Remove the '; #' after the @MOVIES_TO_CONVERT and use the comment as reference if you want manual control.)


#!/usr/bin/perl

use strict;

########################################################################
# Configuration Details #
########################################################################

# Array of movies to convert
my @MOVIES_TO_CONVERT; # = ('The Figher', 'The Fifth Element');

# Directory where the split AVI files are stored
my $MOVIE_IN_PATH = 'T:\Video\Movies';

# Directory where the combined AVI files will be stored
my $MOVIE_OUT_PATH = 'C:\_COMBINED_AVI';

# Full path to the avidemux executable
my $AVIDEMUX = 'C:\Programs\avidemux\avidemux.exe';

########################################################################
# Functions #
########################################################################

# Return an array of all the AVI files in the specified directory.
sub get_avis_in_directory
{
my $dh; # Directory handle
my $dir; # Current directory
my @avis; # Array of file names to return

opendir ($dh, $dir = shift) or die "Failed to open directory $dir: $!\n";
while (readdir $dh)
{
next if (/^\.{1,2}/);
$_ = $dir . "\\" . $_;
push (@avis, $_) if (-f $_ and /.*\.avi$/i);
}
closedir $dh;

return (@avis);
}

########################################################################
# Entry Point #
########################################################################

die "Input directory $MOVIE_IN_PATH does not exist!\n" unless (-d $MOVIE_IN_PATH);
die "Output directory $MOVIE_OUT_PATH does not exist!\n" unless (-d $MOVIE_OUT_PATH);

# This variable represents the actual names and paths of movies to be converted.
# It will either be built from the files specified in @MOVIES_TO_CONVERT manually, or
# built dynamically based on the files in the source and destination paths.
my @movies_formatted; # Array of hashes of movies to convert

if ($#MOVIES_TO_CONVERT == -1)
{
my @in_avis; # Array of AVI files in the input directory
my @out_avis; # Array of AVI files in the ouput directory

@in_avis = get_avis_in_directory ($MOVIE_IN_PATH);
@out_avis = get_avis_in_directory ($MOVIE_OUT_PATH);

for my $in_avi (@in_avis)
{
if ($in_avi =~ /.*-[ ]*CD[ ]*1\.avi$/i)
{
my $rec; # Temporary hash variable
my $name; # Name of the move we are processing
$name = (split (/[ ]*-[ ]*CD[ ]*1/i, $in_avi))[0];
$name = (split (/$MOVIE_IN_PATH[\\\/]{1}/i, $name))[1];

for my $in_avi_2 (@in_avis)
{
if ($in_avi_2 =~ /^$MOVIE_IN_PATH\\$name[ ]*-[ ]*CD[ ]*2\.avi$/i)
{
$rec->{'part2'} = $in_avi_2;
last;
}
}

if (defined $rec->{'part2'})
{
for my $out_avi (@out_avis)
{
if ($out_avi =~ /$name\.avi$/i)
{
$rec->{'output'} = $out_avi;
last;
}
}

unless (defined $rec->{'output'})
{
$rec->{'part1'} = $in_avi;
$rec->{'output'} = "$MOVIE_OUT_PATH\\$name.avi";
push (@movies_formatted, $rec);
}
}
}
}
}
else
{
my $rec; # Temporary hash variable

for my $name (@MOVIES_TO_CONVERT)
{
$rec = {};
$rec->{'part1'} = "$MOVIE_IN_PATH\\$name - CD1.avi";
$rec->{'part2'} = "$MOVIE_IN_PATH\\$name - CD2.avi";
$rec->{'output'} = "$MOVIE_OUT_PATH\\$name.avi";
push (@movies_formatted, $rec);
}
}

for my $movie (@movies_formatted)
{
my $convert_cmd = "\"$AVIDEMUX\" --load \"" . $movie->{'part1'} . "\" --append \"" . $movie->{'part2'} . "\" --force-smart --save \"" . $movie->{'output'} . "\" --quit";
print "$convert_cmd\n";
die "Unable to convert $movie!\n" if (system "$convert_cmd");
}
[/CODE]

[b]Edit:[/b] If you copy/paste the code into a descent text editor with a monospaced font, such as Notepad++, it should look nicer.

  • 0

Funny how things work, been trying to do this script and now playing with perl and in the past hour I've been playing with PowerShell which is way cooler than I thought it was at first and found out it's replacing VBS pretty much.

I'm going to play with AutoIT more also. Thanks again Orange.

I agree that PowerShell is really neat. Its definitely an improvement over both Batch and VBS, but it still pales in comparison to BASH in my opinion. I definitely have to give Microsoft credit for getting it so close to right. PowerShell is the most usable shell/scripting language I have used that Microsoft produced. If you are interested in learning more about it, I definitely recommend the book Windows PowerShell in Action. It was authored by one of the PowerShell core developers and explains the influences and reasoning behind many of their design choices. Not only does it teach PowerShell well, but it helped me to understand the PowerShell mentality more than any of the other PowerShell resources I read.

When it comes to AutoIt, on the one hand I almost wish Microsoft would officially adopt it as their VBS replacement, and on the other hand I'm glad they haven't. AutoIt feels very much like a VBS replacement. Its syntax is similar, yet the language is more powerful. It is simple to use and integrates with Windows very well. It smoothed the rough spots of VBS while polishing what made it great. All-around I think its an excellent language/platform. Although AutoIt would certainly get more support if Microsoft officially adopted it, I'm afraid that Microsoft would kill it. They have a nasty habit of promoting some new language or technology as the-best-thing-since-sliced-bread one year, then abandoning it never-to-be-mentioned-again the next. Therefore, while its not Microsoft's blessed scripting language for Windows, AutoIt is probably safer and more stable that way. I highly recommend it.

  • 0

Thanks again for the info. While looking at your perl code, it kind of helped me understand using batch a little more.

I took my original batch code with the FOR loop and put the names of the movies that are 2 files in a separate text file.

FOR /f "delims=|" %%G IN (filelist.txt) DO (%avidexmuxprog% --load "c:\test\%%G - CD1.avi" --append "c:\test\%%G - CD2.avi" --force-smart --save "c:\test\final\%%G.avi" --quit)

It's working so far, but have to manually enter all names. I haven't tested, but wondering if using | instead of , is why it's working now regardless of delims=, like I had before to separate the names.

I'm looking at that new perl script that is more automated and playing with that too. Learning so much and it's fun. lol

Even though now I have many options of getting this done, I'm trying to make the perl, batch, and powershell work for the hell of it.

  • 0

I'm looking at that new perl script that is more automated and playing with that too. Learning so much and it's fun. lol

Even though now I have many options of getting this done, I'm trying to make the perl, batch, and powershell work for the hell of it.

I'm glad that I was able to help. Automating the same task in different languages is an excellent way to learn the syntax, strengths, and weaknesses of each. The same basic algorithm that I used in the latter Perl script shouldn't be too difficult to implement in PowerShell. (Technically, you could try it in Batch too, but I'm not enough of a masochist to advocate that.)

  • 0

xorangekiller - I installed ActivePerl and set the file paths of the source, destination and Avidemux but when I run the films.pl file (where I have copied your script) a command window flashes up and ends up doing nothing :(

If it helps, I wrote a small hello word script (with the help of Google) and that outputs fine to the command line.

/Edit: On purpose I entered an invalid source and destination path and that does give me the following errors:


Input directory T:\Video\Movies does not exist!
Output directory C:\_COMBINED_AVI does not exist![/CODE]

But as soon as they are right, the script does nothing:

[CODE]
C:\>perl films.pl

C:\>[/CODE]

  • 0

I got it working by using a specified file list, and I think I know what was wrong. My films are named "Film CD 1.avi" etc and not "Film - CD1.avi".

What would I need to change these two lines to work with that format:


$name = (split (/[ ]*-[ ]*CD[ ]*1/i, $in_avi))[0];

if ($in_avi_2 =~ /^$MOVIE_IN_PATH\\$name[ ]*-[ ]*CD[ ]*2\.avi$/i)
[/CODE]

  • 0

I got it working by using a specified file list, and I think I know what was wrong. My films are named "Film CD 1.avi" etc and not "Film - CD1.avi".

What would I need to change these two lines to work with that format:


$name = (split (/[ ]*-[ ]*CD[ ]*1/i, $in_avi))[0];

if ($in_avi_2 =~ /^$MOVIE_IN_PATH\\$name[ ]*-[ ]*CD[ ]*2\.avi$/i)
[/CODE]

You are correct in suspecting the regular expressions as the reason the script is not working for you. I wrote it to expect the OP's naming scheme. Since your naming scheme is a little bit different, my script was not detecting anything to convert. The version below is modified to work under the your conditions; note the differences on lines 66, 70, and 75 in particular.

[CODE]
#!/usr/bin/perl

use strict;

########################################################################
# Configuration Details #
########################################################################

# Array of movies to convert
my @MOVIES_TO_CONVERT; # = ('The Figher', 'The Fifth Element');

# Directory where the split AVI files are stored
my $MOVIE_IN_PATH = 'T:\Video\Movies';

# Directory where the combined AVI files will be stored
my $MOVIE_OUT_PATH = 'C:\_COMBINED_AVI';

# Full path to the avidemux executable
my $AVIDEMUX = 'C:\Programs\avidemux\avidemux.exe';

########################################################################
# Functions #
########################################################################

# Return an array of all the AVI files in the specified directory.
sub get_avis_in_directory
{
my $dh; # Directory handle
my $dir; # Current directory
my @avis; # Array of file names to return

opendir ($dh, $dir = shift) or die "Failed to open directory $dir: $!\n";
while (readdir $dh)
{
next if (/^\.{1,2}/);
$_ = $dir . "\\" . $_;
push (@avis, $_) if (-f $_ and /.*\.avi$/i);
}
closedir $dh;

return (@avis);
}

########################################################################
# Entry Point #
########################################################################

die "Input directory $MOVIE_IN_PATH does not exist!\n" unless (-d $MOVIE_IN_PATH);
die "Output directory $MOVIE_OUT_PATH does not exist!\n" unless (-d $MOVIE_OUT_PATH);

# This variable represents the actual names and paths of movies to be converted.
# It will either be built from the files specified in @MOVIES_TO_CONVERT manually, or
# built dynamically based on the files in the source and destination paths.
my @movies_formatted; # Array of hashes of movies to convert

if ($#MOVIES_TO_CONVERT == -1)
{
my @in_avis; # Array of AVI files in the input directory
my @out_avis; # Array of AVI files in the ouput directory

@in_avis = get_avis_in_directory ($MOVIE_IN_PATH);
@out_avis = get_avis_in_directory ($MOVIE_OUT_PATH);

for my $in_avi (@in_avis)
{
if ($in_avi =~ /.*[ ]*CD[ ]*1\.avi$/i)
{
my $rec; # Temporary hash variable
my $name; # Name of the move we are processing
$name = (split (/[ ]*CD[ ]*1/i, $in_avi))[0];
$name = (split (/$MOVIE_IN_PATH[\\\/]{1}/i, $name))[1];

for my $in_avi_2 (@in_avis)
{
if ($in_avi_2 =~ /^$MOVIE_IN_PATH\\$name[ ]*CD[ ]*2\.avi$/i)
{
$rec->{'part2'} = $in_avi_2;
last;
}
}

if (defined $rec->{'part2'})
{
for my $out_avi (@out_avis)
{
if ($out_avi =~ /$name\.avi$/i)
{
$rec->{'output'} = $out_avi;
last;
}
}

unless (defined $rec->{'output'})
{
$rec->{'part1'} = $in_avi;
$rec->{'output'} = "$MOVIE_OUT_PATH\\$name.avi";
push (@movies_formatted, $rec);
}
}
}
}
}
else
{
my $rec; # Temporary hash variable

for my $name (@MOVIES_TO_CONVERT)
{
$rec = {};
$rec->{'part1'} = "$MOVIE_IN_PATH\\$name CD 1.avi";
$rec->{'part2'} = "$MOVIE_IN_PATH\\$name CD 2.avi";
$rec->{'output'} = "$MOVIE_OUT_PATH\\$name.avi";
push (@movies_formatted, $rec);
}
}

for my $movie (@movies_formatted)
{
my $convert_cmd = "\"$AVIDEMUX\" --load \"" . $movie->{'part1'} . "\" --append \"" . $movie->{'part2'} . "\" --force-smart --save \"" . $movie->{'output'} . "\" --quit";
print "$convert_cmd\n";
die "Unable to convert $movie->{'output'}!\n" if (system "$convert_cmd");
}
[/CODE]

[b]Edit:[/b] Here is the diff between the OP's version of the script and yours. It should make the changes a little more obvious. (The spaces may be a little munged, kinda like the script above. I hate Neowin's code formatting.)

[CODE]
--- avijoin.pl 2013-01-12 20:15:57.468098458 -0500
+++ avijoin-nodash.pl 2013-01-12 20:31:27.336122407 -0500
@@ -63,16 +64,16 @@

for my $in_avi (@in_avis)
{
- if ($in_avi =~ /.*-[ ]*CD[ ]*1\.avi$/i)
+ if ($in_avi =~ /.*[ ]*CD[ ]*1\.avi$/i)
{
my $rec; # Temporary hash variable
my $name; # Name of the move we are processing
- $name = (split (/[ ]*-[ ]*CD[ ]*1/i, $in_avi))[0];
+ $name = (split (/[ ]*CD[ ]*1/i, $in_avi))[0];
$name = (split (/$MOVIE_IN_PATH[\\\/]{1}/i, $name))[1];

for my $in_avi_2 (@in_avis)
{
- if ($in_avi_2 =~ /^$MOVIE_IN_PATH\\$name[ ]*-[ ]*CD[ ]*2\.avi$/i)
+ if ($in_avi_2 =~ /^$MOVIE_IN_PATH\\$name[ ]*CD[ ]*2\.avi$/i)
{
$rec->{'part2'} = $in_avi_2;
last;
@@ -107,8 +108,8 @@
for my $name (@MOVIES_TO_CONVERT)
{
$rec = {};
- $rec->{'part1'} = "$MOVIE_IN_PATH\\$name - CD1.avi";
- $rec->{'part2'} = "$MOVIE_IN_PATH\\$name - CD2.avi";
+ $rec->{'part1'} = "$MOVIE_IN_PATH\\$name CD 1.avi";
+ $rec->{'part2'} = "$MOVIE_IN_PATH\\$name CD 2.avi";
$rec->{'output'} = "$MOVIE_OUT_PATH\\$name.avi";
push (@movies_formatted, $rec);
}
[/CODE]

  • 0

Unfortunately the new script doesn't work. It gives the same result as before and my files are named in the format "Film CD 1.avi" etc.

The only difference this time is that there are some .mkv files in the same folder but if I am reading this script correctly, they would just be ignored?

/Edit: I added "use warnings;" to the top and it shows this error many times:


Use of uninitialized value $name in regexp compilation at films.pl line 76
[/CODE]

  • 0

Unfortunately the new script doesn't work. It gives the same result as before and my files are named in the format "Film CD 1.avi" etc.

The only difference this time is that there are some .mkv files in the same folder but if I am reading this script correctly, they would just be ignored?

/Edit: I added "use warnings;" to the top and it shows this error many times:


Use of uninitialized value $name in regexp compilation at films.pl line 76
[/CODE]

The MKV files should not interfere with the script. It is supposed to filter out everything but AVIs.

The warning you are getting about an uninitialized variable does suggest a cause. The split statement on line 72 is failing. The split statement on line 71, which is supposed to remove the "CD 1" text from the end of the video's name, could be failing as well, but since the $name variable is assigned from the first element of the resulting array, $name will always have a value, even if its wrong. Since the split statement on line 72, which is supposed to remove the leading path from the video's name, is using the second element of the resulting array, $name is not guaranteed to have a value, although a value is assumed by the script. You are getting a warning on line 76 because that is the first place the uninitialized variable is used. Theoretically the way the script is building the array of AVIs and parsing out the name should have made this situation impossible - at least that was my thinking - but apparently not. Your environment must have some condition that my tests did not cover.

If you have more specific questions, feel free to ask. If you discover a solution, post it. Hopefully that gives you enough information to debug your issue. Good luck.

  • 0

I posted the question here:

http://stackoverflow...me-not-matching

See the answer by Borodin, and the following comments. You might be able to help with that :)

Thanks! His answer was very helpful, and he is correct: I'm not a pro Perl programmer. I learned Perl about 4 months ago. I originally wrote this script in Perl because it was certainly easier than Batch, and the best way to learn a language is to practice it.

By the way, after all that: hshah, welcome to Neowin!

  • 0

Thanks! His answer was very helpful, and he is correct: I'm not a pro Perl programmer. I learned Perl about 4 months ago. I originally wrote this script in Perl because it was certainly easier than Batch, and the best way to learn a language is to practice it.

By the way, after all that: hshah, welcome to Neowin!

Thanks for the welcome.

I hadn't noticed his edit (that code wasn't there before) and to be honest I'm not fussed whether your code is the best or not... it works and it has saved me hours of manual work. So the thanks still goes to you :)

  • 0

Hi,

 

wow, this is great.

 

Thanks a lot for your work, xorangekiller.

 

The only think, if i have one wish for free, is, to make it more flexible and simple.

 

For example, the script could parse through all files of a directory (i move all split avis in a separate directory) and whenever it finds two matching files it will join them.

So there is no need to fill the array @MOVIES_TO_CONVERT

 

A second wish is, that the naming convention is mor flexible.

Sometimes the naming of the file is *-cd1.avi / *-cd2.avi, sometimes it's *cd1 or cda or just a and b.

 

 

But anyhow, this is great

 

 

spline

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Well I really think the repasting helped if your higher clocks have returned, maybe the next thing to look at is if there is a problem with your case airflow? I guess this because your 3080 has returned to optimal state, but is still staying too warm, which might suggest it was thermal throttling before you repasted, of which the only logical conclusion could be outside factors.
    • Samsung Galaxy Z Fold 8, Flip 8, Z Fold Wide: Everything you need to know by Hamid Ganji Galaxy Z Fold 7 - Image via Samsung The next generation of Samsung foldables is set to be unveiled next month at the second Unpacked event of the year. Samsung’s 2026 foldables are not expected to offer significant upgrades over their predecessors, with the Korean firm instead focusing on design refinements and conventional upgrades such as faster processors and better cameras. However, Samsung is reportedly planning to unveil an all-new passport-style foldable this year to rival Apple’s first foldable iPhone, which is expected to debut this September. Here’s a roundup of everything we know about Samsung’s upcoming foldable devices ahead of their official debut. When can we expect Samsung’s new foldables? The Galaxy Z Fold 7 and Z Flip 7 series were unveiled in July, and Samsung is expected to maintain this timeframe in 2026. Based on previous reports from Korean sources, Samsung will hold its Unpacked event on July 22 in London, UK, to pull back the curtain on the Galaxy Z Fold 8 series. The devices are also expected to hit the shelves a few weeks after launch. However, Samsung has yet to announce an official date. A new naming scheme? One of the most interesting changes we might see this year is a new naming scheme for Samsung’s latest foldables. SamMobile reported that since Samsung is expected to unveil three foldables this year, it has adopted a new naming strategy to simplify product identification for customers. Accordingly, the standard Galaxy Z Fold 8 will reportedly be called the Galaxy Z Fold 8 Ultra and will serve as the direct successor to last year’s Galaxy Z Fold 7. The “Ultra” suffix suggests the phone could feature higher-end specifications, such as additional rear camera modules. Samsung’s new passport-style foldable is expected to carry the Galaxy Z Fold 8 name without any suffix. This model is reportedly equipped with two rear cameras. No major changes are expected for the Flip model. Galaxy Z Fold 8 Ultra and Z Flip 8 anticipated specs Rumors over the past few months suggest Samsung is preparing several upgrades for its upcoming foldables, although the devices may continue to rely on larger batteries and faster charging speeds rather than dramatic design changes. The primary focus this year is expected to be the Galaxy Z Fold 8 and its wide-screen design. Galaxy Z Fold 8 Ultra official CAD renders - Image via AndroidHeadlines Here are the anticipated specifications for the Galaxy Z Fold 8 Ultra based on previous leaks: 6.5-inch outer display and 8-inch inner display, 120Hz refresh rate, and 2,600 nits peak brightness Snapdragon 8 Elite Gen 5 processor, paired with 12GB or 16GB of RAM and 256GB, 512GB, or 1TB of storage 4.1mm thickness when unfolded and a weight of 210g 200MP main camera, 50MP ultrawide camera, 10MP or 12MP telephoto camera, 10MP cover camera, and 10MP selfie camera 5,000mAh battery with 45W wired charging Android 17 and One UI 9 As for the Galaxy Z Flip 8, the device is not expected to be a major departure from its predecessor, although it could become slightly slimmer. Expected specifications include: Snapdragon 8 Elite Gen 5 or Exynos 2600 processor 12GB of RAM with 256GB and 512GB storage options 6.9-inch Dynamic AMOLED 2X inner dispaly and 4.1-inch Super AMOLED outer dispaly 50MP main camera, 12MP ultrawide camera, and 10MP selfie camera 4,300mAh battery with 25W wired charging Android 17 and One UI 9 Samsung’s foldables are also expected to launch with Gemini Intelligence, Google’s AI suite for automating tasks in Android ecosystem. Moreover, given current memory and component costs, some Galaxy Z Fold 8 Ultra and Z Flip 8 variants could see a price hike. Galaxy Z Fold 8 adopts a wide-screen design The centerpiece of the upcoming Unpacked event could be the Galaxy Z Fold 8, previously rumored as the Galaxy Z Fold Wide. This model adopts a passport-style form factor and is expected to compete directly with Apple’s iPhone Fold. Galaxy Z Fold 8 official CAD renders - Image via AndroidHeadlines Here’s what to expect: 7.6-inch primary OLED display and 5.4-inch cover display, 120Hz refresh rate, 2,600 nits peak brightness, and 4:3 aspect ratio Snapdragon 8 Elite Gen 5 processor, 12GB or 16GB of RAM, and 256GB, 512GB, or 1TB storage options 4,800mAh battery with 45W wired charging 50MP main camera, 50MP ultrawide camera, and 10MP selfie camera Android 17 and One UI 9 The three new foldable phones are unlikely to be the only devices unveiled at Samsung’s Unpacked event. The company is also expected to introduce the Galaxy Watch Ultra 2 and the Galaxy Watch 9 series.
    • Thanks
    • 7 Days: Killing uBlock Origin bypasses, Euro Office faces fire, and will AI replace you? by Aditya Tiwari 7 Days is a weekly roundup of picks of what's been happening in the world of technology - written with a dash of humor, a hint of exasperation, and an endless supply of (black) coffee. This week's highlights include WWDC 2026 announcements, updates on child safety, and Meta's use of data from outside businesses to optimize your feed. Let's get started. You can check out the recent issues of the 7 Days weekly roundup. Killing uBlock Origin bypasses The hottest news of the week was about Google Chrome effectively ending most uBlock Origin workarounds (a free, open-source ad blocker extension) by permanently dropping MV2 extensions and their bypasses. Chrome is transitioning towards newer MV3 extensions. A recent discussion thread highlighted how the latest and upcoming versions of the most popular browser are expected to be its final releases with support for MV2 extensions. Genuinely European? Euro-Office faces fire The recently launched cloud-based office suite, Euro-Office, is facing criticism at home. The LibreOffice developer wrote an open letter criticizing Euro-Office for its marketing claim that it's the "first open-source office suite developed in Europe," since the honor has belonged to OpenOffice since 2001. The Document Foundation has called out Euro-Office, arguing that it can't consider "itself genuinely European" as long as it keeps pushing Microsoft defaults on users, adding that "it has to speak ODF as its mother tongue." Will AI replace you? Image: Tara Winstead via Pexels Microsoft's AI boss, Mustafa Suleyman, said in an interview earlier this year that AI would replace office workers within 12 to 18 months. Joining the ranks of top executives who have softened their stance on AI replacing humans, Suleyman recently walked back his earlier remarks and now says that AI will automate tasks, not replace entire white-collar jobs. He defended his earlier comments by arguing that they referred only to individual actions people perform at their desks. Louis Rossmann wants to sue Samsung Image: Louis Rossmann Tech repair entrepreneur and right-to-repair activist Louis Rossmann contacted Samsung support over a failed 4TB Samsung 990 Pro NVMe SSD. After back-and-forth communication, Samsung offered a $330 refund instead of a replacement, but Rossmann found that the SSD was readily available for new buyers at a higher price. He has issued a formal 60-day notice and intends to file a suit in Texas small claims court, as Samsung's actions reflect a failure to honor its warranty obligations. Samsung reached out to Neowin to clarify its updated stance that customers in such situations will receive a refund equal to the product's current market price. Child safety or mass surveillance? Image: Jonathan Borba via Pexels Signal accused the UK government of using child safety and device-level explicit content ban as a cover for mass surveillance. Calling the plan "dystopian," Signal warned that it violates everyone's fundamental right to privacy. The messaging platform believes that the government should keep children "safe" and "protected," but it should do so through social services and education. Fears of social media regulation Image via DepositPhotos.com More governments across the globe are tightening their grip on social media and bringing stricter regulations in the name of child safety. Bluesky COO, Rose Wang, warned that social media regulations could destroy competition from small startups and that heavy regulatory compliance costs favor deep-pocketed tech giants while locking out new entrants. Our Features Image: Pexels Our coffee-powered team publishes a platter of editorials, opinion posts, and guides. Here's what they got for the week: UK **** blockers are a looming privacy disaster, we must be able to see the source code This week in software news Image: Proton Catch up on some of the latest software news updates that arrived throughout the week: Dark clouds over PC makers: Building on our report from last month, Dell officially acknowledged that its own remediation software was causing BSOD issues and unexpected system restarts. HP is also facing equally frustrating issues involving recent Windows Secure Boot updates on Windows 11. Controversial icon: Spotify finally removed the disco ball icon from its app and replaced it with the familiar flat green logo after weeks of mixed reactions online. While some people don't like the new design, the retro, three-dimensional look has generated a following of its own. Even other brands are coming up with their versions of the disco logo. NVIDIA fixes stuff: A new hotfix driver 610.52 fixes various issues related to monitors and displays, noting that G-SYNC-related frame pacing troubles should now be resolved on Ada Lovelace GPUs. The feedback thread also points out that the hotfix patches a BSOD issue. FIFA World Cup tracker: Opera is redesigning its Android browser with a built-in football tracker for the upcoming World Cup in the US. The new homepage is now "more immersive" with easier access to common browser features. Command line for Proton: The Swiss technology company has launched a command line version of the Proton Drive, which you can use to manage your encrypted files directly from a terminal across all major platforms, including Windows, macOS, and Linux. This week in hardware news Image: Thermaltake Catch up on some of the latest software news updates that arrived throughout the week: Intel and AMD PCs in one case: Thermaltake's CAPO X dual-system chassis brings you the best of both worlds by supporting two microATX (mATX) motherboards and up to two 360 mm AIO liquid coolers. If you want ideas, maybe you can use one as your main PC and another as an AI agent. Google Tensor production: While TSMC will remain the lead producer, the search giant is reportedly in talks with Samsung to hand over part of the production of its next-generation Tensor AI chips. The upcoming TPUs are reportedly codenamed “Icefish” and will be produced using Samsung's 2-nanometer process technology. Lethal fake phone chargers: UK-based consumer rights organization Which? has warned that "potentially lethal knock-off chargers" are still being sold on online marketplaces, including Amazon and eBay, despite the dangers of such chargers having been exposed. This week in Google News Image: Google Catch up on some of the latest Google news updates that arrived throughout the week: Sliding into DMs: You might remember that YouTube had a direct messaging feature back in the day. It's now rolling out a revamped direct messaging inbox that lets you share Shorts, videos, and live streams and have conversations about them. New in NotebookLM: The AI-powered note-taking app got some new agentic capabilities and more advanced reasoning, thanks to support for Gemini 3.5 and Antigravity. NotebookLM can now generate outputs in more formats, making it easier to start new projects with less information. This week in Apple News Image: Apple Catch up on some of the latest Apple news updates that arrived throughout the week: WWDC 2026: This week was all about Apple's annual developer conference, where the iPhone-maker finally unveiled an upgraded Siri AI and a platter of new Apple Intelligence features. Siri AI now has a cross-platform app, which is supported on select models of iPhone, iPad, Mac, Apple Watch, and Vision Pro. What's different about WWDC: I wrote a detailed feature this week discussing how Apple changed the WWDC keynote this year, blurring the lines between its operating systems. Apple didn't have dedicated segments for its operating systems this year and didn't even publish the official press releases. Liquid Glass slider (finally): It's that time of the year when Apple previews fresh updates for iPhone, iPad, Mac, Apple Watch, AirPods, and other platforms. A new transparency slider for Liquid Glass is coming to iOS 27, iPadOS 27, and macOS 27 Golden Gate. Is your device supported?: If you're wondering whether your Apple device supports the new developer beta builds, you can check the respective compatibility lists for iOS 27, iPadOS 27, macOS 27, and watchOS 27. Siri AI not coming to Europe: Yes, that's true due to complications related to the Digital Markets Act (DMA). While Apple penned a blog post to tell its side of the story, a European Commission spokesperson told Neowin that the DMA does not prohibit Apple from launching its services in the EU; the company is simply required to comply with the law. New child safety features: Apple announced a trove of new safety features for kids, including a simpler setup experience for parents, Ask to Browse, Time Allowances, and a redesigned Screen Time UI. Parents can now visit a new website to find answers to common questions around child safety features. More cloud power: Apple's Private Cloud Compute cloud infrastructure will now run beyond its own data centers for the first time. It's working with Google and NVIDIA to run new Apple Intelligence workloads on Google Cloud systems powered by NVIDIA GPUs. This week in Meta news Catch up on the latest Meta news updates that arrived throughout the week: Data from outside: Meta is rolling out a new update globally to personalize your AI responses and primary feeds using data from outside businesses. It already targets ads based on shopping activity, but the latest development enables it to personalize other "parts of your experience." There is a toggle in the Settings to disable activity from other businesses; however, it won't prevent companies from sending your data to Meta. Level playing field: The European Commission has ordered the social media giant to restore access to WhatsApp for third-party AI chatbots, including ChatGPT and Copilot. Meta previously blocked rival AI chatbots from operating on WhatsApp, prompting the Commission to launch an antitrust investigation. Spying on users: On the flip side, WhatsApp accused the Israeli cyber-intelligence firm, NSO Group, of deploying a fresh wave of targeted "spear phishing" attacks against its users, which were thwarted by WhatsApp's security teams. Reorder profile grid: Adding some customization for the profile grid feature, Instagram now lets you rearrange posts in your profile without deleting and reuploading content. Go to your profile and long-press any thumbnail to find the "Reorder grid" option. This week in AI news Catch up on the latest artificial intelligence news updates that arrived throughout the week: Claude RAM hogger: Windows users are getting infuriated by Claude Desktop's hidden 1.8GB Hyper-V VM bug, which spins up if you use Claude Cowork or agent mode even once. It shows a Vmmem process in Task Manager, indicating 0% CPU usage but 1.8GB of RAM usage. Claude Fable 5: The new state-of-the-art AI model from Anthropic beats OpenAI's ChatGPT-5.5 in multiple AI benchmarks. Claude Fable 5 sits above the Opus models and outperforms most other generally available models across knowledge work, vision, scientific research, and more. However, the model was abruptly suspended after receiving an export control directive from the US government. Stack Overflow for AI agents: The popular Q&A platform has launched Stack Overflow for Agents in beta, which AI agents can use to share, find, and reuse coding knowledge. It explained that AI agents operate in isolation, creating an Ephemeral Intelligence Gap, and valuable tokens are wasted on something another agent has already solved. Upgrading Codex: OpenAI is buying a company called Ona, which makes secure cloud execution and orchestration technology for developers. The ChatGPT-maker aims to make Codex agents run for days without being tied to a local machine or an active session. It also announced a new developer mode in Chrome. This week in open-source news Catch up on some of the latest open-source and Linux updates that arrived throughout the week: Linux 7.1 rc7: Linux Torvalds dropped an optimized rc7 with crucial fixes for AMD and laptop hardware. He said that a stable version of Linux 7.1 could arrive next week, adding that the latest RC is not small, but smaller than recent releases. Alpine Linux 3.24: The latest Alpine Linux release added support for COSMIC Desktop, Linux 6.18, IPv6 installer support, automatic serial console configuration for headless setups, and major package updates and removals. This week in Microsoft News Microsoft had to shut down more than 70 GitHub repos after they were compromised by malware, Teams is getting a controversial tracking feature that users may hate, and the company explained why the new update makes PowerToys faster. You can check out Taras's freshly baked Microsoft Weekly roundup to catch up on all the interesting stories this week. This week in gaming The latest issue of Pulasthi's Weekend PC Game Deals curates several exciting games on sale this week. On the Epic Games Store, the new titles on display for grabs include Warhammer 40K Speed Freeks and The Ouroboros King. NVIDIA GeForce NOW's summer sale lowered the prices of both the Performance and Ultimate membership options for a limited time period. Meanwhile, the Xbox Free Play Days brought Undead Labs' post-apocalyptic title State of Decay 2, as well as two Team17-published titles. That said, here are some more stories from the gaming world: Dragon's Dogma 2: Dark Arisen expansion to bring snowy region, new updates also coming Playground drops 30 minutes of Fable gameplay, shows off life sim and morality system Playground Games confirms Forza Horizon 6 save wipe bug Doom: The Dark Ages Revelations expansion gives the Slayer a brutal Chain Spear State of Decay 3 is out in 2027, reveals Plague Nests with new co-op gameplay trailer From the review corner This week, Taras got his hands on the DuRoBo Krono portable e-ink reader, which comes with a $279 price tag. It's a smartphone-sized device with a rotating dial, sitting somewhere between premium and cheap in terms of build quality. Speaking of the pros, the physical controls are cool, the smart dial is useful, the battery life is good, and Android 15 has no-nonsense software. On the flip side, the device lacks software customization, the built-in AI needs improvement, the smart dial is a bit wobbly, and there is no ambient light sensor. EA Sports UFC 6 EA Sports UFC 6 does a better job at onboarding new players than most fighting games, according to Pulasthi's detailed review. The game comes with rewarding combat systems, top-notch animation, impressive impact physics, and visible damage on fighters. However, the menus lag a lot, grappling isn't very fun, and the flow state feels a little misplaced. More price drops! We got you covered with some hot tech deals all week. For some reason, if you missed out on a great discount, here is a summary of some recent deals that are still alive: GIGABYTE Radeon RX 9070 XT Gaming OC ICE 16G - $649.99 (13% off) 1TB Samsung T7 Portable SSD - $189.98 (31% off) AirPods Pro 3 - $179 ($50 off) Edifier R1280Ts Powered Bookshelf Speakers - $129.99 (24% off) To view all of our recent deals, click here. So, these were some of the biggest tech news and other updates from this week. There will be more issues of our 7 Days series in the coming weeks and months, so stay tuned. You can also support Neowin by registering for a free member account or subscribing to extra member benefits, along with an ad-free tier option. Have a great weekend!
  • Recent Achievements

    • Week One Done
      rolfus earned a badge
      Week One Done
    • One Month Later
      Leroy Jethro Gibbs earned a badge
      One Month Later
    • Conversation Starter
      flexorcist earned a badge
      Conversation Starter
    • One Month Later
      AndreaB earned a badge
      One Month Later
    • One Month Later
      agatameier earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      505
    2. 2
      +Edouard
      197
    3. 3
      PsYcHoKiLLa
      141
    4. 4
      ATLien_0
      90
    5. 5
      Steven P.
      81
  • Tell a friend

    Love Neowin? Tell a friend!