• 0

Batch Script to delete, choose random, rename and move. PLEASE HELP!


Question

5 answers to this question

Recommended Posts

  • 0

Hi,

Something like the following should work, although I haven't tested it.

Dim firstPath : firstPath = "C:\Users\Matt\Desktop\TestFolder1\"
Dim secondPath : secondPath = "C:\Users\Matt\Desktop\TestFolder2\"

Dim fileSystemObject : Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
Dim fileName : fileName = "x.jpg"

If (fileSystemObject.FileExists(firstPath & fileName)) Then
	fileSystemObject.DeleteFile firstPath & fileName
End If

Dim allFiles: Set allfiles = fileSystemObject.GetFolder(secondPath).Files
Dim imageFiles : Set imageFiles = CreateObject("Scripting.Dictionary")

Dim count : count = 1
Dim file

For Each file In allFiles
	If (Right(Lcase(file.Name), 4) = ".jpg") Then
		imageFiles.Add count, file.Name
		count = count + 1
	End If
Next

Randomize
Dim random : random = Int((count - 1 + 1) * Rnd + 1)

fileSystemObject.MoveFile secondPath & imageFiles(random), firstPath & fileName

The idea is we do the following:

  1. If the target image currently exists, delete it.
  2. Get a list of all the available files in the source directory.
  3. Create a list of all the available images in the source directory.
  4. Generate a random number used as the key in the dictionary of available images.
  5. Perform the rename of the source image as we move it to the target directory.

Make sure you test it first, as I haven't.

  • 0
  Antaris said:
Hi,

Something like the following should work, although I haven't tested it.

Dim firstPath : firstPath = "C:\Users\Matt\Desktop\TestFolder1\"
Dim secondPath : secondPath = "C:\Users\Matt\Desktop\TestFolder2\"

Dim fileSystemObject : Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
Dim fileName : fileName = "x.jpg"

If (fileSystemObject.FileExists(firstPath & fileName)) Then
	fileSystemObject.DeleteFile firstPath & fileName
End If

Dim allFiles: Set allfiles = fileSystemObject.GetFolder(secondPath).Files
Dim imageFiles : Set imageFiles = CreateObject("Scripting.Dictionary")

Dim count : count = 1
Dim file

For Each file In allFiles
	If (Right(Lcase(file.Name), 4) = ".jpg") Then
		imageFiles.Add count, file.Name
		count = count + 1
	End If
Next

Randomize
Dim random : random = Int((count - 1 + 1) * Rnd + 1)

fileSystemObject.MoveFile secondPath & imageFiles(random), firstPath & fileName

The idea is we do the following:

  1. If the target image currently exists, delete it.
  2. Get a list of all the available files in the source directory.
  3. Create a list of all the available images in the source directory.
  4. Generate a random number used as the key in the dictionary of available images.
  5. Perform the rename of the source image as we move it to the target directory.

Make sure you test it first, as I haven't.

Hi really appreciate but I need it in MSDOS command prompt. Windows batch file. Are you able to help as well?

  • 0

Batch simply isn't advanced enough to do this. Random selection is the main problem, it has no method to find a random number. Complex things like this aren't for batch. Use vb.net, its simple and its the language the previous poster used. If needed you could use vb.net and choose 'Console Application' to run it in a command prompt window.

  • 0

Wrong, you can do this. You would just have to know the names of the .jpg files in the Directory B, and how many.

@echo off
set 1=A .jpg file location in directory B. (C:\Directory B\)
set 2=A .jpg file location in directory B. (C:\Directory B\)
set 3=A .jpg file location in directory B. (C:\Directory B\)
set 4=A .jpg file location in directory B. (C:\Directory B\)
\\keep on doing this for how ever many .jpg files there are
set /a random2=%random%%%5
if %random2%==1 set random2=%1%
if %random2%==2 set random2=%2%
if %random2%==3 set random2=%3%
if %random2%==4 set random2=%4%
\\keep on doing this for how ever many .jpg files there are
del C:\Directory A\X.jpg
ren %random2% X.jpg
move C:\Directory B\X.jpg C:\Directory A\
echo A new, random .jpg file has replaced the old .jpg in Directory A.
pause

On line number 7, you have to change the "5" to 1 more than the currrent number of .jpg files Directory B. This is so that it selects a number 1-n.

Edited by PVVnT(0)L
  • 0
  Quote
Hi I really need help with creating a batch file that does the following. pleas help!

1) Delete "X.jpg" from directory A,

2) Choose random .jpg file in directory B and rename it to "X.jpg",

3) Move "X.jpg" from Directory b to directory A.

Please help

junjie: Did you mean copy instead of rename ? (This technique is used to show random images on a web page.)

Good responses so far. Here is an alternate script that would work on Windows. This is not absolutely random but comes clsoe. (Please test it first.)

var str list; lf -n "*.jpg" "DirectoryB"  # DirectoryB is the directory B.
var int count; set $count = { len $list }
var int s; set $s = makeint(str({chex "12[" gettime()}))
var int random; set $random = $count/60*($s+1)
# We want to copy random'th file to X.jpg.
var str file; set $file = { lex makestr(int($random)) $list }
system copy $file "DirectoryA/X.jpg" # DirectoryA is the directory A.

This script is in biterscripting ( http://www.biterscripting.com ). Email me if you need further help.

Sen

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

    • No registered users viewing this page.
  • Posts

    • I am low-key enjoying the new start menu of 25H2 build. Looks like the management team who shoved the Recommended Section down our throats up till now got fired in recent gommage at MS. Also loving the 6Ghz Hotspot feature. I only enabled these 2 features and I am happy. I keep an eye on MDL forums for 26200.xxxx updates once a week to stay up to date manually. I downloaded the latest build from https://uupdump.net selected Dev Channel tab and downloaded amd64 build. Let the script ripp. Then I used vivetool to enable the above 2 features • 25H2 New Start Menu ViVeTool.exe /enable /id:47205210,49221331,49381526,49402389,49820095,55495322,48433719 • Enable Wifi 6Ghz Hotspot ViVeTool.exe /enable /id:40466470,48433719 Reboot and enjoy. Almost all the above info was provided by Neowin at some point.
    • Indeed, I do think its sad in some ways a corporation can never be content with "performing well across every metric" and having over £59 billion cash on hand.
    • They've been focusing on security and quality? Could have fooled me. Their own paying customers literally just got breached because they failed to push SharePoint updates downstream to on prem servers operating outside of their "365" ecosystem.
    • The animosity is unnecessary, when I opened the page I only saw one response which never mentioned your other steps, and when I hit reply it jumped straight to the bottom and again, I saw no other responses.  I was simply agreeing with the first comment that said yes, you should be fine if you erase its current operating system. Using another PC, or the copy of Windows that comes on that PC (former option is more trustworthy), download and run the Windows Media Creation tool.  It will walk you thru the process of downloading Windows and writing it to a USB stick.  It will even ask you at one point whether you're reinstalling it to the current machine or installing it on another machine. Then just boot the PC in question from that USB stick.  Usually spamming Esc, Del, F-8, F-9, F-10, F-11, F-12 or F-2 immediately after power on will bring up a boot menu, it varies by manufacturer.  If Windows starts booting you either missed your window or hit the wrong key. Follow the on-screen instructions.  When it gets to the disk formatting part I usually just delete all the partitions on the destination drive, then select the unpartitioned space as my destination.  The Windows installer will then automatically partition the drive as needed. Be prepared to download drivers from the PC manufacturer's website, they may not come bundled with Windows and you may not be able to use things like WiFi or ethernet until you have them.  They "might" work straight away, but they also might not.  Better to be prepared with a spare PC and a USB stick to transfer them over.
    • Wise Disk Cleaner 11.2.5 by Razvan Serea Wise Disk Cleaner is a free disk utility designed to help you keep your disk clean by deleting any unnecessary files. Usually, these unnecessary, or junk files appear as a result of program's incomplete uninstalls, or Temporary Internet Files. It is best if these files are wiped out from time to time, since they may, at some point, use a considerable amount of space on your drives. Wise Disk Cleaner, with its intuitive and easy to use interface, helps you quickly wipe out all the junk files. Using the program is indeed easy. It also works fast when both scanning for files and deleting files. The new Wise Disk Cleaner has more advantages: improved performance, better interface and scans/cleans more thoroughly. Wise Disk Cleaner Free provides lifetime free update service and Unlimited Free technical support. The first Slimming System software Wise Disk Cleaner is the first system slimming tool, which will help you to remove Windows useless files that you don't need, such as Korean IME, Windows Sample music, videos, pictures, Installers and Uninstallers of Updates Patches etc. Wise Disk Cleaner 11.2.5 Build 845 changelog: Added cleaning rules for Legacy Games Launcher, Letasoft Sound Booster, Macrium Reflect, MagicLine4NX, MAGIX Photostory, MakeHuman, Max Recorder, Maxprog iCash, Lexware, LG PC Suite, Lightworks, LINE, Listary, and LockHunter. Improved cleaning rules for Xunlei, PowerToys, Meitu, OneDrive, and Tencent Video. For security reasons, users can no longer delete the latest system restore point in the Restore Center. Enhanced System Slimming. Fixed minor bugs from the previous version. Download: Wise Disk Cleaner 11.2.5 | 6.9 MB (Freeware) Download: Portable Wise Disk Cleaner 11.2.5 | 7.3 MB View: Wise Disk Cleaner Home Page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • One Year In
      armandointerior640 earned a badge
      One Year In
    • One Month Later
      armandointerior640 earned a badge
      One Month Later
    • One Month Later
      Itbob513626 earned a badge
      One Month Later
    • Week One Done
      Itbob513626 earned a badge
      Week One Done
    • Rookie
      EdwardFranciscoVilla went up a rank
      Rookie
  • Popular Contributors

    1. 1
      +primortal
      615
    2. 2
      ATLien_0
      236
    3. 3
      Xenon
      156
    4. 4
      +FloatingFatMan
      122
    5. 5
      Michael Scrip
      115
  • Tell a friend

    Love Neowin? Tell a friend!