// To Compile: gcc recycler.c -o recycler -lole32 -lshell32 // Mostly from https://github.com/Krzysiu/cmdwinutils with mods by Doug Lyons for ReactOS // License: MIT #include #include #include int moveToRecycleBin(const char* filePath) { SHFILEOPSTRUCTW fileOp; WCHAR pathBuffer[MAX_PATH]; DWORD cch; PWSTR pwszFileName = NULL; cch = strlen(filePath); MultiByteToWideChar(CP_ACP, 0, filePath, -1, pathBuffer, cch + 1); pathBuffer[wcslen(pathBuffer) + 1] = L'\0'; // Double null termination ZeroMemory(&fileOp, sizeof(fileOp)); fileOp.wFunc = FO_DELETE; fileOp.pFrom = pathBuffer; fileOp.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_ALLOWUNDO; int result = SHFileOperationW(&fileOp); if (result != 0) { printf("Failed to delete file. Error code: %d\n", result); return 1; } else { // optional message on success } return 0; } int main(int argc, char* argv[]) { if (argc != 2) { printf("recycler.exe v0.0.1\n(C) 2024, krzysiu.net, MIT license\nMoves file/directory to recycle bin in Windows\nUsage: recycler \n"); return 1; } return moveToRecycleBin(argv[1]); }