File monitoring - windows

my goal is to track the usage of every internal file of my software.
Example:
My program is located in C:\myprogram and has inside 12 subfolders and 4 files, every subfolder has subfolders and files. Lets' make it simple and say under the "myprogram" folder there are 100 files i'd like to track (executable programs who call other files inside the same folder structure).
Which info do I want to know? Who (system user) used / accessed the file and at hat time.
I am sure some of the files are unused and i'm migrating to a new technology so i don't want to rewrite programs that are not used. So what I'm doing here is tracking usage frequency to decide wether to rewrite or not all the procedures.
Thanks everyone.

Related

Is there any way to filter folders/directories by name in windows?

Is there any way to filter folders by Name in Windows?
Let's suppose I have 100 or 200 folders with different names in the directory.
Now I have a list of specific folder names that are in the folders and I want to filter/move those listed name folders to another directory.
In an easy word I want to copy/move listed folder names to another folder/directory.
How can I do that with any software in bulk? I am searching for it but I can't find any software to do this task for me. I can manually move the folder one by one but it's so time-consuming when I have hundreds of folders.
I am currently using XCOPY GUI software but in this software, I have to first filter the path exception folder before I get my final result.
Example:
Main Dir contains
1st folder
2nd folder
3rd folder
4th folder
and so on ...
I have a list of names in my notepad which folders I want to copy or move.
3rd folder,
4th folder
Final Dir:
3rd folder
4th folder
How can I do that in bilk using any software or any way?
Thanks
If you're using Java, you can use methods in the Files class, or instances of File.
For example, Files.move() might help. If you're using an IDE, type stuff that might be right, like Files.move(), and suggestions will pop up that might lead you down the right path. Also, you can look at the documentation. I am currently scraping the web and creating and filing files, so I know about this somewhat, although not specifically about moving folders rather than files. I'm using Java on a MacBook, so that might influence how relevant my suggestions are to you depending on what you're using.
Basically, look at the documentation for your language. You hopefully won't need any external libraries since moving folders should be a basic task.

How to move things from many difference folders that have the same file name and rename them based on the folder they come from?

I'm facing a very complicated process of trying to move almost 100 files from 100 different folders with different folder names. Each folder has the file I want but they share the same file name across all 100 folders. The only thing that distinguishes them is the folder that they are in. I'm working in a terminal Linux command line system using bash so I'd need to code the transfer of these files. I could obviously do it individually but that would take ages.
The reason I want to transfer these files is I want to be able to run an analysis that involves pooling all these files into one folder from the 100 separate folders. However, if I move them they all have the same name which wouldn't work. Is there a way to rename things upon it being moved all in one go instead of individually moving things which would take ages? The key issue is since they all share the same name how do I tell which folder they originate from since that is their identifier.
In terms of what I have tried is I wanted to make a script that would iterate through the folders but the thing is I only need 100/1000 folders there. So I risk getting files from unwanted folders. Given the naming convetion of the folders are as follows
**GSE94671.T_CD5.Sp.ra (Keep)
GSE94671.T_CD5.Sp.rb (Keep)
GSE94671.T_CD5.Sp.rc (Keep)
GSE95337.ETP.Th.ra (Ignore)
GSE95853.HSPC.BM.rb (Keep)**
I couldn't come up with anyway to iteratre through them that avoids the specific folders I don't want.

Windows - Virtually consolidating files from several directories into a single path

I have been searching for this for a while but no success yet. Not sure if I'm using the right terms...
I'm trying to programmatically automatize the use of an API (from a software called Pix4D) to which I need to pass a directory path as one of the parameters. This directory is supposed to contain all files that will be processed by the aforementioned API.
The problem is that the API only accepts a single path, while my business process will always organise the input files into several input folders (I tried, but I cannot change this).
I'm trying to find a way to create an extra folder that would contain some sort of reference to all the files organised in those input folders. Thus, when one opens that "virtual folder" path, he would see all files together. This would potentially allow me to use the path for the new folder as the input for the API.
So, suppose I have these files I want the API to process:
C:\proc\20170101\f1.jpg
C:\proc\20170101\f2.jpg
C:\proc\20170201\f1.jpg
C:\proc\20170201\f2.jpg
C:\proc\20170301\f1.jpg
C:\proc\20170301\f2.jpg
I would need a single path to a directory that virtually contains all those 6 jpg files.
Some constraints:
We don't want to duplicate files
The virtual path needs to be created via command line
It should work on a Windows machine
Yes, there might be files with same names in the input folders. We can work around this, if necessary
Open source/free solutions would be better
Any help is highly appreciated. Same goes to any different approach to the problem.
Thanks

How Windows differentiates between Copied files and Created files

I am looking for a bit of advice on how Windows file system differentiates between files that are copied(copy and pasted from another location) and files that are created (a new file created in a a folder).
A bit of background to this so it makes more sense: I have an application that is used to move files. The application will monitor a directory and when a file is placed in the directory it will move it elsewhere. However, I am having issues where the application will not pick up a file that is created within the monitored directory but will pick up files that have been created else where and are copied into the monitored directory.
Any advice on how Windows differentiates, or if it does at all, would be greatly appreciated.
This is running on Microsoft Windows Server 2008 R2 Standard. I can't dig into the code and see what is going on under the hood unfortunately, so need to get an idea of the difference if any there would be.
The filesystems don't know the operation of "copying" the file. Any copying is a sequence of file open/read/write/close operations. The same applies to moving to the different filesystem. Moving within the same filesystem, though, is an operation native to the filesystems and it can be done with one command to the filesystem.
Now about your problem. Most likely you catch the creation of the file (before the data is written), and when your application reacts, the file is still opened for writing. So you need to wait until the file is closed.
Depending on how you do monitoring, such waiting is done in different ways. In filesystem filters you wait for file close operation. With .NET FileSystemWatcher there's no way to track file close operation, but I saw a couple of tricks here on StackOverflow (don't have a link though, sorry).
A file existing in D: drive, from creation
The same file which was copied to E: drive
As you can see, the file which was copied to E: drive, has a creation time as the latest, when it was copied to and the modification time as the last modification time for that file in previous location.
So I guess this illustrates, how windows differentiates between copied files and created files.

Difference between Program Files and ProgramData?

How do I decide which of my application's files go in Program Files (FOLDERID_ProgramFilesX64) and which go in ProgramData? (FOLDERID_ProgramData)? I don't understand what the reason is for splitting up my application's fixed files into these two categories or how I should decide which file goes in what.
For example - image files which my application displays, are they "program" or "data"?
Is there any problem with just putting everything under one or the other?
The application is installed for All Users and has no user-specific configuration files or data.
Program Files is for executables and other static files that came as part of the installation. ProgramData is for user-agnostic data generated during execution such as shared cache, shared databases, shared settings, shared preferences, etc. User-specific data goes in the AppData folder. Note that these are for non-user-visible data. User-visible data belongs in the documents folder (or music, video, custom sibling folder, etc.).
Please see Special Folders and Custom Folders for a detailed explanation. Note that the terminology used varies slightly between the name used in the documentation here, the name of the folder, and the name used by various enumerations used to get these paths from the system.

Resources